Comment obtenir des informations sur une image (image) à partir de la ligne de commande Linux?


257

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 que je migre. 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?

Réponses:


263

Pour certains formats d'image, vous pouvez simplement utiliser la filecommande:

$ 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 convertcommande fait partie du package ImageMagick.


7
Peut-être juste moi, mais il semble que imagemagick charge des données d’image là-bas, car elles fonctionnent assez lentement. imo identifydevrait être utilisé à la place
jozxyqk

1
oh, /dev/nullest un argument hehe
Aquarius Power

FWIW c'est ce que j'avais l'habitude d'obtenir avec la dateidentify -format "%[EXIF:DateTimeOriginal]\n" foobar.jpg
heure de

2
La version actuelle de filene supporte pas l'affichage de la taille de JPEG sans paramètre supplémentaire: $ file foo.jpgretours foo.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 72x72, segment length 16, Exif Standard: [TIFF image data, big-endian, direntries=1], baseline, precision 8, 120x120, frames 3
Cœur

199

Le meilleur moyen d’obtenir ces informations est d’utiliser la identifycommande suivante:

$ identify image.png

ou seulement la taille des attributs

$ identify -format "%wx%h" photo.jpg

Cela fait partie de ImageMagick, que vous pouvez installer sur Ubuntu comme ceci:

$ sudo apt-get install imagemagick

1
Les spécifications de la chaîne de format se trouvent dans le manuel de GraphicsMagick .
Sjoerd

10
Je vais ajouter le -verbosedrapeau. Je devais trouver DPI (qui sont dans le champ Résolution)
gc5

pour CentOS do: yum installer ImageMagick
ranger le

Cette réponse fonctionne à la fois avec des fichiers JPEG et donne les informations nécessaires à son installation.
Hugh Perkins

3
@fbrundu Quel est le lien entre DPI et une résolution du type72x72
Seanny123

27

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    :

21

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. XVID-à- d . X264, Etc.

Une interface graphique est également disponible dans les pensions standard pour toutes les principales distributions généralement nommées. mediainfo-gui


19

Découvrez é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 de l'image (super utilisateur) , mais identify -verbosesemble fonctionner pour la même image que dans l'extrait 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 puisse ê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? .


Nice: identify -verbosec'est le seul outil que j'ai trouvé qui rapporte la qualité JPG. Par exemple, il va dire Quality: 90.
tanius

15
identify -verbose image.png

identifier provient du package ImageMagick.

Il extrait également les informations exif de l’image jpeg.


7

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 mesure 564w * 779h, 3 couleurs, 8 bits par échantillon


6

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

Est-ce une farce? J'ai essayé ceci et un avertissement est apparu me demandant si je voulais vraiment lire un fichier binaire, puis il a simplement affiché un tas de fichiers binaires ... (avec Ubuntu 14.04)
Hugh Perkins

Vous devez installer ImageMagick pour que cela fonctionne. J'ai mentionné qu'il utilise ImageMagick en coulisse, n'est-ce pas?
Thanh DK

1
Une manière assez stupide de le faire ... si vous avez installé imageMagick, utilisez simplement la commande identifier.
Mike Q

4

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.


2

L'outil que vous voulez est file.

Il montre une quantité surprenante d’informations sur toutes sortes de fichiers.

La syntaxe est la suivante:

$ file my_pic.jpg


2

Vous pouvez utiliser :

php -r "print_r(getimagesize('file:///archives/Picture/12 farvardin/20120331_013.jpg'));"

Aussi, vous pouvez remplacer file://parhttp://


Piggy backing, vous pouvez faire la même chose, mais utiliser des arguments en ligne de commande pour le rendre un peu plus facile à utiliser. php -r "print_r(getimagesize(\$argv[1]));"
Kevin Schroeder

2

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

Cela 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).


pas de dpi à Ubuntu
typelogic
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.