Existe-t-il une commande shell qui renvoie la taille en pixels d'une image?
J'essaie de produire un gif animé à partir de différents gifs de différentes tailles en utilisant convert
(par exemple convert -delay 50 1.gif 2.gif -loop 0 animated.gif
).
Le problème est que convert superpose simplement les images en utilisant la taille de la première image comme taille du gif animé, et comme elles ont des tailles différentes, le résultat est un peu un fouillis, avec des fragments d'anciens cadres affichés sous les nouveaux.
Réponses:
trouvé une solution
identify
:, une partie du paquet imagemagick, fait exactement ce dont j'ai besoinla source
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
Plutôt que d'analyser la sortie de
identify
eye ou d'utilitaires de texte, vous pouvez utiliser son-format
option pour afficher la largeur et la hauteur dans le format qui vous convient le mieux. Par exemple:Vous trouverez une liste des propriétés d'image que vous pouvez générer sur cette page , mais pour la question ici, il semble que tout ce dont vous avez besoin est
%w
et%h
, qui donne la largeur et la hauteur de l'image, respectivement, en pixels.La flexibilité offerte par
-format
m'a été utile pour trouver les images les plus grandes en termes de pixels, en produisant%[fx:w*h]
pour un certain nombre d'images et en triant la sortie.Vous voudrez peut-être spécifier l'
-ping
option si vous traitez beaucoup d'images, utilisez des évasions plus complexes et vous voulez vous assurer que le programme ne perd pas de temps à charger toutes les images. Avec des échappées simples,-ping
devrait être la valeur par défaut. Plus d'informations sur le choix entre-ping
et+ping
peuvent être trouvées ici .la source
vous pouvez simplement utiliser la commande "fichier" pour obtenir les informations dont vous avez besoin:
la source
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"
Utilisez
identify
pour voir les tailles:Extraire la valeur via
cut | sed
, à partir du champ 3:Asign à variable:
la source
Les deux
display
etfile
sont assez lents, et ont le potentiel d'apporter encore tout à fait des systèmes capables à leurs genoux traitant de nombreux fichiers multiples. Un petit test:En ne lisant que les octets nécessaires, cette opération peut être considérablement accélérée.
Voici pngsize:
Cette méthode est beaucoup plus rapide que d’utiliser une bibliothèque qui charge le PNG en avant, en arrière et de côté pour obtenir la taille de l’image: P (Considérez le code avec soin avant de l’alimenter dans un répertoire plein de PNG arbitraires, bien sûr.)
Les utilisations de code inet.h pour htonl () pour dé- endian -ize l'ordre des octets d' en- tête.
la source
Vous pouvez également essayer GraphicsMagick , un fichier bien entretenu d’ImageMagick, utilisé par exemple sur Flickr et Etsy:
C'est plus rapide que l'identité d'ImageMagick (deux fois dans mes tests).
la source
C'était un extrait utile (je n'ai pas écrit) qui renvoie les dimensions pour chaque png et jpg du dossier:
la source
Pour ceux qui, comme moi, veulent la taille en mégapixels:
la source