Czy istnieje polecenie powłoki, które zwraca rozmiar piksela obrazu?
Próbuję stworzyć animowany gif, zaczynając od różnych gifów o różnych rozmiarach, używając convert
(np convert -delay 50 1.gif 2.gif -loop 0 animated.gif
.).
Problem polega na tym, że konwersja po prostu nakłada się na obrazy przy użyciu rozmiaru pierwszego obrazu jako rozmiaru animowanego gifa, a ponieważ mają one różne rozmiary, wynik jest nieco bałaganu, a fragmenty starych ramek są wyświetlane pod nowymi.
conversion
images
image-manipulation
gif
niebieski
źródło
źródło
Odpowiedzi:
znalazłem rozwiązanie:
identify
część pakietu imagemagick robi dokładnie to, czego potrzebujęźródło
identify imagename.ico
?Like todour.ico[0] ICO 32x32 32x32+0+0 4-bit sRGB 0.000u 0:00.000
todour.ico[1] ICO 16x16 16x16+0+0 4-bit sRGB 0.000u 0:00.000
todour.ico[2] ICO 48x48 48x48+0+0 8-bit sRGB 0.000u 0:00.000
Zamiast analizować dane wyjściowe za
identify
pomocą oka lub za pomocą narzędzi tekstowych, możesz użyć tej-format
opcji do wyświetlania szerokości i wysokości w dowolnym formacie, który najbardziej Ci odpowiada. Na przykład:Lista właściwości obrazu, które można wydrukować, znajduje się na tej stronie , ale w przypadku tego pytania wydaje się, że wszystko, czego potrzebujesz,
%w
i%h
które podają odpowiednio szerokość i wysokość obrazu, w pikselach.Elastyczność, jaką zapewniała,
-format
przydała mi się w wyszukiwaniu największych obrazów pod względem pikseli,%[fx:w*h]
generowaniu wielu zdjęć i sortowaniu wyników.Możesz określić tę
-ping
opcję, jeśli przetwarzasz wiele obrazów, używając bardziej skomplikowanych znaków ucieczki i chcesz mieć pewność, że program nie marnuje czasu na ładowanie całych obrazów. Przy prostych ucieczkach-ping
powinien być domyślny. Więcej informacji na temat wyboru pomiędzy-ping
i+ping
można znaleźć tutaj .źródło
możesz po prostu użyć polecenia „plik”, aby uzyskać potrzebne informacje:
źródło
file taylor-swift-money-makers-990.jpg
->taylor-swift-money-makers-990.jpg: JPEG image data, JFIF standard 1.01, comment: "CREATOR: gd-jpeg v1.0 (using IJ"
Użyj,
identify
aby zobaczyć rozmiary:Wyodrębnij wartość przez
cut | sed
, z pola 3:Przypisz do zmiennej:
źródło
Zarówno
display
ifile
są dość powolne i mają potencjał, aby przynieść nawet systemów całkowicie zdolny do ich kolan do czynienia z wieloma wieloma plikami. Mały test:Czytanie tylko niezbędnych bajtów pozwala znacznie przyspieszyć tę operację.
Oto pngsize:
Ta metoda jest znacznie szybsza niż użycie biblioteki, która ładuje PNG do przodu, do tyłu i na boki, aby uzyskać rozmiar obrazu: P (Rozważ uważnie kod przed załadowaniem go do katalogu pełnego arbitralnych PNG).
Zastosowania kod inet.h dla htonl () do de- endian -ize zamawiania nagłówek bajtów.
źródło
Możesz także wypróbować GraphicsMagick , który jest dobrze utrzymanym widelcem ImageMagick używanym np. W Flickr i Etsy:
Jest szybszy niż identyfikacja ImageMagick (w moich testach około dwa razy).
źródło
To był pomocny fragment (nie napisałem), który zwraca wymiary dla każdego png i jpg w folderze:
źródło
Dla takich jak ja, którzy chcą wielkości w megapikselach:
źródło