Je travaille sur une application Web et migre actuellement des éléments d'une ancienne application, mais je déteste devoir ouvrir un éditeur d'images pour obtenir des informations sur les images en cours de migration. Des choses comme les dimensions de l'image.
Existe-t-il un outil de ligne de commande que je peux utiliser pour de telles tâches sous Linux?
Pour certains formats d'image, vous pouvez simplement utiliser la commande file
:
$ file MyPNG.png
MyPNG.png: PNG image, 681 x 345, 8-bit/color RGB, non-interlaced
Tous les formats d'image ne signalent pas la taille (le format JPEG notamment ne le permet pas):
$ file MyJpeg.jpg
MyJpeg.jpg: JPEG image data, JFIF standard 1.01
Pour ceux que vous devrez utiliser quelque chose de plus élaboré, comme:
$ convert MyJpeg.jpg -print "Size: %wx%h\n" /dev/null
Size: 380x380
La commande convert
fait partie du package ImageMagick.
Le meilleur moyen d’obtenir ces informations est d’utiliser la commande identify
:
$ identify image.png
ou seulement les attributs de taille
$ identify -format "%wx%h" photo.jpg
Cela fait partie de ImageMagick, que vous pouvez installer sur Ubuntu comme ceci:
$ Sudo apt-get install imagemagick
exiv2 est "l'outil" pour obtenir des informations à partir de fichiers image:
~$exiv2 myimage.jpg
les sorties:
File name : myimage.jpg
File size : 1196944 Bytes
MIME type : image/jpeg
Image size : 2592 x 1944
Camera make : LG Electronics
Camera model : LG-P970
Image timestamp : 2013:05:19 17:27:06
Image number :
Exposure time : 1/9 s
Aperture :
Exposure bias : 0 EV
Flash : Yes, compulsory
Flash bias :
Focal length : 3.7 mm
Subject distance:
ISO speed : 745
Exposure mode :
Metering mode : Average
Macro mode :
Image quality :
Exif Resolution :
White balance : Auto
Thumbnail : image/jpeg, 13776 Bytes
Copyright :
Exif comment :
mediainfo donnerait des informations encore plus détaillées. Il se trouve généralement dans les dépôts standard sous Linux et est également disponible via homebrew sous OSX.
Essayez par exemple de courir dans le dossier actuel:
mediainfo *
ou
mediainfo .
Les deux commandes afficheront des informations sur tous les fichiers multimédias du dossier actuel et des sous-dossiers.
Afficher les informations sur toutes les images JPG à partir du dossier actuel (comprend les sous-dossiers):
find . -iname "*.jpg" -exec mediainfo {} \;
Il est également très utile avec les fichiers audio et vidéo car il indique le débit de tous les flux audio/vidéo, l’algorithme de codage, le type de conteneur, le code FOURCC, c.-à-d. XVID
, X264
, etc.
Il existe également une interface utilisateur graphique disponible dans les dépôts standard pour toutes les principales distributions généralement nommées mediainfo-gui
Consultez également ExifTool de Phil Harvey ; un exemple:
$ exiftool test.png
ExifTool Version Number : 8.15
File Name : test.png
Directory : .
File Size : 12 MB
File Modification Date/Time : 2014:02:13 13:04:52+01:00
File Permissions : rw-r--r--
File Type : PNG
MIME Type : image/png
Image Width : 2490
Image Height : 3424
Bit Depth : 8
Color Type : RGB
Compression : Deflate/Inflate
Filter : Adaptive
Interlace : Noninterlaced
Significant Bits : 8 8 8
Image Size : 2490x3424
Btw, je cherchais à obtenir des informations sur dpi/résolution à partir de la ligne de commande; et il est intéressant de noter que parfois aucun de ces outils ne rapporte cela dans une image (comme dans l'extrait ci-dessus); Pour plus d'informations à ce sujet, voir Je souhaite modifier le DPI avec Imagemagick sans changer la taille en octets réelle des données d'image - Super utilisateur - Cependant, identify -verbose
semble fonctionner pour la même image que dans le fragment précédent:
$ identify -verbose test.png
Image: test.png
Format: PNG (Portable Network Graphics)
Class: DirectClass
Geometry: 2490x3424+0+0
Resolution: 72x72
Print size: 34.5833x47.5556
Units: Undefined
Type: TrueColor
Endianess: Undefined
Colorspace: RGB
Depth: 8-bit
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
Channel statistics:
Red:
min: 8 (0.0313725)
max: 255 (1)
mean: 237.541 (0.931533)
standard deviation: 37.2797 (0.146195)
kurtosis: 21.2876
skewness: -4.56853
Green:
min: 15 (0.0588235)
max: 255 (1)
mean: 240.007 (0.941204)
standard deviation: 37.8264 (0.148339)
kurtosis: 20.7241
skewness: -4.51584
Blue:
min: 9 (0.0352941)
max: 255 (1)
mean: 240.349 (0.942547)
standard deviation: 38.7118 (0.151811)
kurtosis: 22.255
skewness: -4.72275
Image statistics:
Overall:
min: 8 (0.0313725)
max: 255 (1)
mean: 179.474 (0.703821)
standard deviation: 108.711 (0.426316)
kurtosis: -0.958865
skewness: -0.995795
Rendering intent: Undefined
Interlace: None
Background color: white
Border color: rgb(223,223,223)
Matte color: grey74
Transparent color: black
Compose: Over
Page geometry: 2490x3424+0+0
Dispose: Undefined
Iterations: 0
Compression: Zip
Orientation: Undefined
Properties:
date:create: 2014-02-13T13:11:08+01:00
date:modify: 2014-02-13T13:04:52+01:00
signature: bada990d3ba29b311501146d9013d67cf36f667c6d39b1f28a72ce913924397d
Artifacts:
verbose: true
Tainted: False
Filesize: 12.52MB
Number pixels: 8.526M
Pixels per second: 7.894M
User time: 1.080u
Elapsed time: 0:02.080
Version: ImageMagick 6.6.2-6 2012-08-17 Q16 http://www.imagemagick.org
... bien que, il peut être un peu difficile de lire la résolution en unités de PixelsPerInch en utilisant identify -verbose
- voir ImageMagick • View topic - Impossible de définir des unités en pixels par pouce? .
identify -verbose image.png
identifier provient du package ImageMagick.
Il extrait également les informations exif de l’image jpeg.
Vous pouvez essayer cette commande si les réponses ci-dessus ne fonctionnent pas:
rdjpgcom -verbose photo.jpg
Il montrera des informations comme:
L'image JPEG est 564w * 779h, 3 composantes de couleur, 8 bits par échantillon
Je viens de découvrir que less (avec lessfile/lesspipe) peut réellement afficher des informations sur une image en utilisant ImageMagick en coulisse:
Sudo apt-get install imagemagick
less wallpaper.jpg
Sortie
wallpaper.jpg JPEG 1920x1200 1920x1200+0+0 8-bit DirectClass 580KB 0.000u 0:00.000
Autre méthode non publiée ci-dessus, utilise feh (vous devez l’installer):
feh -l image.jpg
Sortie:
NUM FORMAT WIDTH HEIGHT PIXELS SIZE(bytes) ALPHA FILENAME
1 jpeg 1280 960 1228800 91319 - image.jpg
En utilisant:
feh -l *.jpg
Générera un tableau (comme ci-dessus) mais avec toutes les informations sur les images (incrémentation de la colonne NUM). Utile à utiliser dans les scripts.
L'outil que vous souhaitez utiliser est file
.
Il montre une quantité surprenante d’informations sur toutes sortes de fichiers.
La syntaxe est la suivante:
$ file my_pic.jpg
Vous pouvez utiliser :
php -r "print_r(getimagesize('file:///archives/Picture/12 farvardin/20120331_013.jpg'));"
Aussi, vous pouvez remplacer file://
par http://
Si vous utilisez des fichiers PNG, il se peut que certains attributs soient difficiles à lire avec presque tous les logiciels. Pour ceux-là, vous devriez utiliser pngmeta:
pngmeta file.png
Ceci est particulièrement utile pour les vignettes, car, selon le standard FreeDesktop, elles doivent être au format PNG et stocker les informations de chemin d'accès sous la forme d'un attribut PNG (Thumb :: URI).