2011-04-26 09:28:39 +0000 2011-04-26 09:28:39 +0000
264
264

Come ottenere informazioni su un'immagine (foto) dalla riga di comando di Linux?

Sto lavorando su una web-app, e attualmente sto migrando alcune cose da una vecchia app, ma odio dover aprire un editor di immagini per ottenere informazioni sulle immagini che sto migrando. Cose come le dimensioni delle immagini.

C'è uno strumento a riga di comando che posso usare per questi compiti in Linux?

Risposte (12)

270
270
270
2011-04-26 09:40:37 +0000

Per alcuni formati immagine si può semplicemente usare il comando file:

$ file MyPNG.png 
MyPNG.png: PNG image, 681 x 345, 8-bit/color RGB, non-interlaced
``` ```
$ file MyJpeg.jpg 
MyJpeg.jpg: JPEG image data, JFIF standard 1.01

Non tutti i formati immagine riportano la dimensione (JPEG in particolare non lo fa):

$ convert MyJpeg.jpg -print "Size: %wx%h\n" /dev/null
Size: 380x380
``` &001 


Per quelli che dovranno usare qualcosa di più elaborato, come: 


&001 &001 


Il comando `convert` fa parte del pacchetto ImageMagick.
206
206
206
2011-12-23 14:16:38 +0000

Il modo migliore per ottenere queste informazioni è utilizzare il comando identify:

$ identify image.png

o solo gli atributes

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

Fa parte di ImageMagick, che si può installare su Ubuntu in questo modo:

$ sudo apt-get install imagemagick
30
30
30
2013-07-25 01:57:44 +0000

exiv2 è “lo strumento” per ottenere informazioni da file di immagini:

~$exiv2 myimage.jpg

uscite:

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
21
21
2011-12-23 17:22:07 +0000

mediainfo darebbe informazioni ancora più dettagliate. Di solito è nei repository standard su Linux, ed è disponibile anche via homebrew su OSX.

Prova ad esempio a girare nella cartella corrente:

mediainfo *

o

mediainfo .

Entrambi i comandi mostreranno le informazioni su tutti i file multimediali nella cartella corrente e nelle sottocartelle.

Mostra informazioni su tutte le immagini JPG a partire dalla cartella corrente (include le sottocartelle):

find . -iname "*.jpg" -exec mediainfo {} \;
``` &001 


È anche molto utile con i file audio e video, in quanto mostra il bitrate di tutti i flussi audio/video, la codifica algorythm, il tipo di contenitore, il codice FOURCC, cioè `XVID`, `X264`, ecc. 


C'è anche una GUI disponibile in repository standard per tutte le principali distro solitamente chiamate `mediainfo-gui`
21
21
21
2014-02-13 12:33:36 +0000

Inoltre, date un'occhiata a ExifTool di Phil Harvey ; un esempio:

$ 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, stavo cercando di ottenere informazioni su dpi/risoluzione dalla riga di comando; e curiosamente, a volte nessuno di questi strumenti riporta che in un'immagine (come nel precedente snippet); per maggiori informazioni su questo, vedi Voglio cambiare DPI con Imagemagick senza cambiare l'effettiva dimensione del byte dei dati dell'immagine - Super User - tuttavia, identify -verbose sembra funzionare per la stessa immagine come nel precedente snippet:

$ 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

. … anche se può essere un po’ difficile leggere la risoluzione in unità di PixelsPerInch usando identify -verbose - vedi ImageMagick - Visualizza argomento - Non è possibile impostare le unità di misura in pixelsperinch? .

15
15
15
2012-08-31 08:29:46 +0000
identify -verbose image.png

identify è dal pacchetto ImageMagick.

Estrae anche informazioni exif dall'immagine jpeg.

7
7
7
2012-10-04 09:53:14 +0000

Si può provare questo comando se le risposte di cui sopra non funzionano:

rdjpgcom -verbose photo.jpg

Mostra informazioni come:

** L'immagine JPEG è 564w * 779h, 3 componenti a colori, 8 bit per campione**

6
6
6
2012-12-20 07:26:18 +0000

Ho appena scoperto che meno (con lessfile/lesspipe) può effettivamente visualizzare informazioni sulle immagini utilizzando ImageMagick dietro le quinte:

sudo apt-get install imagemagick
less wallpaper.jpg
``` ```
wallpaper.jpg JPEG 1920x1200 1920x1200+0+0 8-bit DirectClass 580KB 0.000u 0:00.000

Output

&001

5
5
5
2013-01-25 04:04:20 +0000

Altro metodo non pubblicato sopra, è l'utilizzo di feh (è necessario installarlo):

feh -l image.jpg

Output:

NUM FORMAT WIDTH HEIGHT PIXELS SIZE(bytes) ALPHA FILENAME
1 jpeg 1280 960 1228800 91319 - image.jpg

Utilizzo:

feh -l *.jpg
``` &001 


Userà una tabella (come sopra) ma con tutte le informazioni delle immagini (incrementando la colonna NUM). Utile da usare negli script.
2
2
2
2013-10-15 18:30:09 +0000

È possibile utilizzare :

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


Inoltre è possibile sostituire `file://` con `http://`
2
2
2
2013-12-05 09:07:51 +0000

Se avete a che fare con le PNG, ci potrebbero essere degli attributi che ho trovato difficili da leggere con quasi tutti i software. Per questi, dovreste usare pngmeta:

pngmeta file.png

Questo è particolarmente utile per le miniature, poiché, secondo lo standard FreeDesktop, dovrebbero essere formattate in PNG e memorizzare le informazioni sul percorso come attributo PNG (Thumb::URI).

2
2
2
2011-04-26 09:41:00 +0000

Lo strumento che desiderate è file.

Mostra una quantità sorprendente di informazioni su tutti i tipi di file.

La sintassi è:

$ file my_pic.jpg