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


257

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

Esiste uno strumento da riga di comando che posso usare per tali compiti in Linux?

Risposte:


263

Per alcuni formati di immagine puoi semplicemente usare il filecomando:

$ file MyPNG.png 
MyPNG.png: PNG image, 681 x 345, 8-bit/color RGB, non-interlaced

Non tutti i formati di immagine riportano le dimensioni (in particolare JPEG no):

$ file MyJpeg.jpg 
MyJpeg.jpg: JPEG image data, JFIF standard 1.01

Per quelli dovrai usare qualcosa di più elaborato, come:

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

Il convertcomando fa parte del pacchetto ImageMagick.


7
Potrei essere solo io, ma sembra che imagemagick stia effettivamente caricando i dati dell'immagine lì mentre scorre abbastanza lentamente. identifyInvece, dovrebbe essere usato imo
jozxyqk,

1
oh, /dev/nullè un argomento hehe
Aquarius Power

FWIW questo è quello che ho usato per ottenere il datetime di creazione di una foto:identify -format "%[EXIF:DateTimeOriginal]\n" foobar.jpg
kralyk

2
La versione attuale di filesupporta la visualizzazione delle dimensioni di JPEG senza parametri aggiuntivi: $ file foo.jpgrestituisce 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 il

199

Il modo migliore per ottenere queste informazioni è usando il identifycomando:

$ identify image.png

o solo attributi di dimensioni

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

Fa parte di ImageMagick, che puoi installare su Ubuntu in questo modo:

$ sudo apt-get install imagemagick

1
Le specifiche per la stringa di formato sono disponibili nel manuale GraphicsMagick .
Sjoerd,

10
Aggiungerò la -verbosebandiera. Avevo bisogno di trovare DPI (che si trovano nel campo Risoluzione)
gc5

per CentOS do: yum installa ImageMagick
ordinato il

Questa risposta funziona sia con i jpeg che fornisce le informazioni necessarie per installarlo.
Hugh Perkins,

3
@fbrundu come si collega DPI a una risoluzione come72x72
Seanny123,

27

exiv2 è "lo strumento" per ottenere informazioni dai file di immagine:

~$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

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

Prova ad esempio in esecuzione nella cartella corrente:

mediainfo *

o

mediainfo .

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

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

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

È anche molto utile con file audio e video, in quanto mostra il bitrate di tutti i flussi audio / video, codifica algoritmo, tipo di contenitore, codice FOURCC, cioè XVID, X264ecc

C'è anche una GUI disponibile nei repository standard per tutte le principali distro di solito denominate mediainfo-gui


19

Inoltre, controlla 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

A proposito, stavo cercando di ottenere informazioni su dpi / risoluzione dalla riga di comando; e interessante, a volte nessuno di questi strumenti lo riporta in un'immagine (come nel frammento di cui sopra); per ulteriori informazioni, vedi Voglio cambiare DPI con Imagemagick senza cambiare la dimensione effettiva dei byte dei dati dell'immagine - Super User - tuttavia, identify -verbosesembra funzionare per la stessa immagine dello snippet precedente:

$ 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 'complicato leggere la risoluzione in unità di PixelsPerInch usando identify -verbose- vedi ImageMagick • Visualizza argomento - Impossibile impostare le unità su pixelperinch? .


Bello: identify -verboseè l'unico strumento che ho trovato che riporta la qualità JPG. Ad esempio dirà Quality: 90.
tanius,

15
identify -verbose image.png

identifica proviene dal pacchetto ImageMagick.

Estrae anche informazioni exif dall'immagine jpeg.


7

Puoi provare questo comando se le risposte sopra non funzionano:

rdjpgcom -verbose photo.jpg

Mostrerà informazioni come:

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


6

Ho appena scoperto che meno (con lessfile / lesspipe) può effettivamente visualizzare informazioni sull'immagine usando ImageMagick dietro la scena:

sudo apt-get install imagemagick
less wallpaper.jpg

Produzione

wallpaper.jpg JPEG 1920x1200 1920x1200+0+0 8-bit DirectClass 580KB 0.000u 0:00.000

È uno scherzo? Ho provato questo, e mi è apparso un avvertimento che mi chiedeva se volevo davvero leggere un file binario, e poi ha visualizzato solo un mucchio di binari ... (usando Ubuntu 14.04)
Hugh Perkins,

Devi installare ImageMagick per farlo funzionare. Ho detto che usa ImageMagick dietro la scena, no?
Thanh DK,

1
Un modo stupido di farlo ... se hai installato imageMagick, usa solo il comando identifica.
Mike Q,

4

Un altro metodo non pubblicato sopra, sta usando feh (è necessario installarlo):

feh -l image.jpg

Produzione:

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

usando:

feh -l *.jpg

Produrrà una tabella (come sopra) ma con tutte le informazioni sulle immagini (incrementando la colonna NUM). Utile da usare negli script.


2

Lo strumento che vuoi è file.

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

La sintassi è:

$ file my_pic.jpg


2

Puoi usare :

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

Inoltre è possibile sostituire file://conhttp://


Eseguendo il backup su questo puoi fare la stessa cosa, ma usando arg della riga di comando per renderlo un po 'più facile da usare. php -r "print_r(getimagesize(\$argv[1]));"
Kevin Schroeder,

2

Se hai a che fare con i PNG, potrebbero esserci degli attributi che ho trovato difficili da leggere con quasi tutti i software. Per quelli, dovresti usare pngmeta:

pngmeta file.png

Ciò è particolarmente utile per le miniature, poiché, secondo lo standard di FreeDesktop, dovrebbe essere formattato PNG e archiviare le informazioni sul percorso come attributo PNG (Thumb :: URI).


non dire alcun dpi in Ubuntu
typelogic il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.