PNG Zmiana rozmiaru partii i zapisywanie przy jednoczesnym zachowaniu przejrzystości

10

Mam około 700 zdjęć PNG. Muszę je zmienić i zapisać. Potrzebuję jednak również ich przejrzystości, aby były nienaruszone.

Próbowałem Irfanview, ale to nie zadziałało. GIMP działa, ale nie mogę znaleźć opcji oszczędzania wsadowego. Nie zamierzam ręcznie zmieniać rozmiaru i zapisywać ponad 700 zdjęć. To zbyt nudne.

Czy są jakieś aplikacje, które wykonują pracę, której potrzebuję?

Grumpy ol 'Bear
źródło
Próbowałeś ImageMagick?
slhck
Nie, ale czy nie dotyczy to serwerów?
Grumpy ol 'Bear
1
Co masz na myśli mówiąc o serwerach? To oprogramowanie wiersza polecenia, które można uruchomić na dowolnym systemie operacyjnym.
slhck
Tak nie Wiersz poleceń nie jest moją siłą. Potrzebuję czegoś z przydatnym GUI.
Grumpy ol 'Bear
@DonSalva możesz to zrobić w obrębie 2 linii cmd, używając ffmpeg, nawet bez siły
Jet

Odpowiedzi:

10

Przepraszamy, musisz użyć wiersza polecenia. Naprawdę bardzo wątpię, że możesz znaleźć program GUI, który sobie z tym poradzi.

Nie określono, którego systemu operacyjnego używasz. W systemie Linux następujące polecenie zmieni rozmiar wszystkich plików .png w bieżącym katalogu. Pamiętaj, że zastąpi oryginalne obrazy:

##  bash (Linux, OSX):
for i in *png; do convert "$i" -resize 32x32 "$i"; done
##  on Windows:
for %i in (*png); do convert %i -resize 32x32 %i; done

Zauważ, że w przypadku linii Windows, jeśli używasz go w skrypcie, a nie w wierszu poleceń, musisz użyć %%izamiast %i.


Inną opcją byłoby skryptowanie GIMP . Ten skrypt zmieni rozmiar obrazu ( źródło ):

(define (batch-resize pattern width height)
(let* ((filelist (cadr (file-glob pattern 1))))
(while (not (null? filelist))
(let* ((filename (car filelist))
(image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
(drawable (car (gimp-image-get-active-layer image))))
(gimp-image-scale-full image width height INTERPOLATION-CUBIC)
(gimp-file-save RUN-NONINTERACTIVE image drawable filename filename)
(gimp-image-delete image))
(set! filelist (cdr filelist)))))

Zapisz go jak batch_resize.scmw scriptskatalogu GIMP , a następnie uruchom w następujący sposób:

gimp -i -b '(batch-resize "*.JPG" 604 453)' -b '(gimp-quit 0)'

AKTUALIZACJA:

Właśnie natknąłem się na ten post, który sugeruje, że wtyczka GIMP David's Batch Processor powinna robić dokładnie to, co chcesz. Artykuł dotyczy Linuksa, ale na stronie wtyczki znajduje się link do wersji systemu Windows .

terdon
źródło
Mój zły, zawsze zapomniałem o systemie operacyjnym. To Win7 64bit.
Grumpy ol 'Bear
ImageMagick ma wersję systemu Windows i powinieneś (jakoś) móc używać skryptu GIMP również w systemie Windows.
terdon
@DonSalva zobacz zaktualizowaną odpowiedź.
terdon
ImageMagick to niesamowite narzędzie do tego typu prac. Naucz się go używać, a pokochasz go na zawsze!
Lee Harrison
Wszystko dzięki @evilsoup za dodanie wiersza polecenia systemu Windows.
terdon
4

Myślę, że narzędzie ImBatch może ci pomóc w twoim zadaniu. Dla mnie działa dobrze z Win7 x64. To jest darmowe.

Max Smirnoff
źródło
Świetne narzędzie, znacznie bardziej elastyczne niż IrfanView i obsługuje png z alfa - dzięki!
Tomáš Kafka
3

XNConvert ma prosty i intuicyjny interfejs GUI do tych zadań.

XnConvert to potężny i darmowy wieloplatformowy wsadowy procesor obrazu, który pozwala łączyć ponad 80 akcji. Kompatybilny z 500 formatami. Wykorzystuje moduł przetwarzania wsadowego XnViewMP

  • przetwarzanie wsadowe
  • zachowuje przezroczystość (testowane przy pomocy przezroczystego PNG )
  • automatyczna lub predefiniowana zmiana rozmiaru
  • nie wymaga instalacji

wprowadź opis zdjęcia tutaj

nixda
źródło
Próbowałem tego i nie zachowałem przezroczystości (wersja Mac). Czy robi to, jakiego rodzaju resampling jest używany (użyłem Lanczosa tak jak ty).
niico
Sam to wypracowałem - wystarczy to przy użyciu Bilinear Resampling. W oknie „Po” możesz zobaczyć, jak to będzie wyglądać - jeśli przezroczysty obszar jest czarny, wiesz, że nie zadziała.
niico
@niico Próbowałem teraz 3 różnych metod ponownego próbkowania, także Lanczosa. Wszystkie dają przezroczyste obrazy. Może wersja MAC działa w inny sposób
nixda
Próbowałem tego na PC i Mac - identyczne na obu. Co więcej - teraz zauważam, że ponowne próbkowanie, które zrobiłem, jest postrzępione jak diabli i nie nadaje się do użytku.
niico
2

Domyślnie użycie FFMpeg jest najkrótszym sposobem :)
Pobierz tutaj , umieść go w folderze z plikami, otwórz wiersz poleceń, przejdź do folderu (z cd) i napisz tam:

mkdir Resized
for %f in (*.png) do ffmpeg -i "%~nxf" -s 32x32 "Resized\%~nxf"

i zmień 32x32w zależności od rozmiaru. Zmieni rozmiar twoich plików PNG i umieści je w Resizedfolderze.
Spowoduje to wykonanie pracy bez pliku wsadowego. Jeśli jednak chcesz umieścić to w pliku nietoperza, napisz %%zamiast %.

Mam nadzieję, że ci to pomoże.

Strumień
źródło
0

Nie próbowałem ImBatch ani XNConvert, o których wspominali inni, ale oto kilka innych propozycji dla Ciebie:

  • pngquant (narzędzie wiersza polecenia. Ja sam korzystałem z graficznego interfejsu użytkownika Windows PNGoo zawartego na stronie)
  • Kwantyzator kolorów (wiele możliwości dostrajania ustawień w celu użycia różnych algorytmów ditheringu itp. Nigdy nie działałem tak dobrze, jak PNGoo / pngquant, ale może to wynikać z mojej ograniczonej wiedzy).
  • TinyPNG.com (bezpłatny serwis internetowy ma limit 20 plików, każdy mniejszy niż 5 MB)
Carl
źródło
0

Miałem ten sam problem wiele razy i przez większość czasu miałem zainstalowany program Photoshop. Skompletowałem więc ten skrypt, używając kilku inspiracji kodu innego użytkownika.

https://gist.github.com/pixelbacon/7754cba64125b0240504

Stosowanie

  • Zainstaluj Photoshop CC lub nowszą wersję.
  • Otwórz skrypt w Photoshopie.
  • W oknie dialogowym pojawi się monit o wybranie folderu źródłowego.
  • W oknie dialogowym pojawi się monit o wybranie folderu docelowego.
  • Kolejne okno dialogowe zapyta o maksymalną szerokość i wysokość.
  • Kolejne okno dialogowe poprosi o idealną szerokość, a następnie idealną wysokość.
  • Poczekaj, aż skrypt otworzy wszystkie pliki PSD lub AI, które masz w folderze źródłowym, i zapisz je jako przezroczysty PNG-24.
  • Okno dialogowe poinformuje Cię, gdy zostanie wykonane.

Bibliografia

Było więcej niż 2 linki do referencji, moja obecna reputacja nie pozwala mi już pisać. Zobacz oryginalny skrypt, ponieważ odniesienia są udokumentowane.

pixelbacon
źródło