Risposte:
Il file
comando utilizzato in altre risposte è talvolta incoerente. Per esempio:
───────────────────────────────────────────────────────────────────────────────
rick@dell:~/Pictures$ file "256 colors.jpg"
256 colors.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), density 96x96, segment length 16, baseline, precision 8, 800x800, frames 3
───────────────────────────────────────────────────────────────────────────────
rick@dell:~/Pictures$ file "vnStat.png"
vnStat.png: PNG image data, 410 x 121, 8-bit/color RGB, non-interlaced
La prima istanza è probabilmente un'immagine della fotocamera e la seconda che ho preso usando una cattura dello schermo.
Il identify
comando, su cui si basa la mia risposta, sembra funzionare correttamente in tutti i casi. Ad esempio test sulla prima istanza sopra:
rick@dell:~/Pictures$ identify "256 colors.jpg"
256 colors.jpg JPEG 800x800 800x800+0+0 8-bit sRGB 45KB 0.000u 0:00.000
Ho ImageMagick installato che mi permette di usare:
$ identify -verbose vnStat.png
Image: vnStat.png
Format: PNG (Portable Network Graphics)
Mime type: image/png
Class: DirectClass
Geometry: 410x121+0+0
Units: Undefined
Type: TrueColor
Endianess: Undefined
Colorspace: sRGB
Depth: 8-bit
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
Channel statistics:
Pixels: 49610
Red:
min: 0 (0)
max: 255 (1)
mean: 12.0814 (0.0473779)
standard deviation: 46.7032 (0.18315)
kurtosis: 18.8998
skewness: 4.49862
Green:
min: 0 (0)
max: 255 (1)
mean: 21.1804 (0.0830606)
standard deviation: 57.5336 (0.225622)
kurtosis: 6.68226
skewness: 2.82613
Blue:
min: 0 (0)
max: 255 (1)
mean: 14.2606 (0.0559237)
standard deviation: 50.2969 (0.197243)
kurtosis: 13.5573
skewness: 3.85914
Image statistics:
Overall:
min: 0 (0)
max: 255 (1)
mean: 15.8408 (0.0621207)
standard deviation: 51.7078 (0.202776)
kurtosis: 11.8528
skewness: 3.62638
Rendering intent: Perceptual
Gamma: 0.454545
Chromaticity:
red primary: (0.64,0.33)
green primary: (0.3,0.6)
blue primary: (0.15,0.06)
white point: (0.3127,0.329)
Background color: white
Border color: srgb(223,223,223)
Matte color: grey74
Transparent color: black
Interlace: None
Intensity: Undefined
Compose: Over
Page geometry: 410x121+0+0
Dispose: Undefined
Iterations: 0
Compression: Zip
Orientation: Undefined
Properties:
date:create: 2017-01-24T20:04:50-07:00
date:modify: 2017-01-24T20:04:50-07:00
png:IHDR.bit-depth-orig: 8
png:IHDR.bit_depth: 8
png:IHDR.color-type-orig: 2
png:IHDR.color_type: 2 (Truecolor)
png:IHDR.interlace_method: 0 (Not interlaced)
png:IHDR.width,height: 410, 121
png:sRGB: intent=0 (Perceptual Intent)
png:text: 1 tEXt/zTXt/iTXt chunks were found
signature: e9f31b79da6ce46cdea5da21ae8648496faa181b0621098aa2dbbdff4a9a4502
Software: gnome-screenshot
Artifacts:
filename: vnStat.png
verbose: true
Tainted: False
Filesize: 14.7KB
Number pixels: 49.6K
Pixels per second: 0B
User time: 0.000u
Elapsed time: 0:01.000
Version: ImageMagick 6.8.9-9 Q16 x86_64 2017-07-31 http://www.imagemagick.org
Per un rapporto di riepilogo omettere tutti i parametri:
$ identify vnStat.png
vnStat.png PNG 410x121 410x121+0+0 8-bit sRGB 14.7KB 0.000u 0:00.000
Sostituisci vnStat.png
con il tuo .png
nome file e prefiguralo con il percorso, se necessario.
Per capire PNG-24 vs PNG-32 questa risposta di SuperUser la riassume:
Se la tua immagine è a 24 bit vedrai:
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
Se la tua immagine PNG è a 32 bit vedrai:
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
alpha: 8-bit
Tuttavia questa risposta non è completa perché il colore a 8 bit mostra anche 8 bit per Rosso, Verde e Blu, solo una tavolozza di colori viene utilizzata per limitare il numero di selezioni (come nella buona vecchia Windows 2.0).
Esamina queste tre immagini dall'articolo di approfondimento di Wikipedia :
Nome del file: 8_bit.png
usando:
identify -verbose 8_bit.png | grep colors
png:PLTE.number_colors: 249
Vediamo che ci sono 249 colori utilizzati. Il massimo possibile con 8 bit è di 256 colori.
Nome del file: 4_bit.png
usando:
identify -verbose 4_bit.png | grep colors
png:PLTE.number_colors: 16
Vediamo che ci sono 16 colori usati, che è la massima combinazione di colori possibile con 4 bit.
Nome del file: 2_bit.png
usando:
$ identify -verbose 2_bit.png | grep colors
png:PLTE.number_colors: 4
Vediamo che ci sono 4 colori usati, che è la massima combinazione di colori possibile con 2 bit.
PNG a 32 bit (8 bit per canale - w / alpha, chiamato anche "PNG a 24 bit con 8 bit di alfa" o "PNG24 con alfa"):
$ file zyne_zyne.png:
PNG image data, 64 x 64, 8-bit/color RGBA, non-interlaced
PNG a 24 bit (8 bit per canale - nessun canale alfa)
$ file 24.png
PNG image data, 1060 x 821, 8-bit/color RGB, non-interlaced
PNG a 8 bit (256 colori):
$ file 8bit.png
PNG image data, 1060 x 821, 8-bit colormap, non-interlaced
file
è il mio principale strumento di identificazione dei file e sono sempre stupito di quanto possa dire anche su formati di file esotici. Certo, la sua implementazione è cresciuta un po 'dagli anni '80 :)
Se hai installato exiftool , puoi fare:
bash-4.3 # exiftool continents_blank_l.png Numero versione ExifTool: 10.20 Nome file: continents_blank_l.png Directory:. Dimensione file: 170 kB Data / ora modifica file: 2016: 07: 05 07: 59: 28 + 05: 30 Data / ora di accesso al file: 2017: 08: 07 00: 35: 15 + 05: 30 Data / ora modifica file Inode: 2016: 07: 05 07: 59: 28 + 05: 30 Autorizzazioni file: rw-r - r-- Tipo di file: PNG Estensione tipo file: png Tipo MIME: image / png Larghezza immagine: 1100 Altezza immagine: 850 Profondità bit: 8 Tipo di colore: RGB con alfa Compressione: sgonfia / gonfia Filtro: adattivo Interlacciato: non interlacciato Colore di sfondo: 255 255 255 Pixel per unità X: 3937 Pixel per unità Y: 3937 Pixel: metri Data modifica: 2016: 07: 05 02:29:28 Dimensione dell'immagine: 1100x850 Megapixel: 0.935
La via dell'hacker: sbirciare nei byte reali all'interno del blocco PNG IHDR .
$ od -j 24 -N 2 -t u1 -An drivemount-applet_open.png
8 2
Il primo numero indica la profondità di bit. Il secondo, il tipo di colore (2 è per le immagini RGB, ovvero le immagini con tre canali o tre valori campione per pixel).
Quindi, in questo caso abbiamo un PNG RGB8 (24 bit per pixel).
In alternativa all'uso sopra di "file" che si basa sulla magia dei file nell'intestazione del file PNG, se si lavora con file PNG, è utile avere installato il pacchetto " pngtools ".
pnginfo può quindi essere usato per fornire tutti i dettagli delle proprietà del file PNG incluso BitDepth (Bit / Esempio) (che non deve essere confuso con un'altra proprietà, Pixel Depth).
file Debian_Expo.png
Debian_Expo.png: PNG image data, 1280 x 1024, 8-bit/color RGB, non-interlaced
---
pnginfo Debian_Expo.png
Image Width: 1280 Image Length: 1024
Bitdepth (Bits/Sample): 8
Channels (Samples/Pixel): 3
Pixel depth (Pixel Depth): 24
Colour Type (Photometric Interpretation): RGB
...
L'equivalente per i file JPEG è jpeginfo, nel suo pacchetto jpeginfo.
Il formato dell'output di pnginfo semplifica l'estrazione del valore di BitDepth (com'è su una riga separata) se viene utilizzato in uno script di shell.
Se il file non è in realtà un file PNG, ad esempio perché è un JPEG con nome errato, pnginfo segnalerà "Questo file non è un file PNG valido".
Come sempre lo strumento appropriato per il lavoro è determinato, tra le altre cose, dalla frequenza con cui lo userete e dal modo in cui desiderate elaborare l'output.
identify -format %z
- vedi le opzioni del formato di ImageMagick per ulteriori informazioni.