J'ai un fichier PNG mais je ne peux pas dire si c'est PNG-8 ou PNG-24?
la source
J'ai un fichier PNG mais je ne peux pas dire si c'est PNG-8 ou PNG-24?
L' file
utilisation de la commande dans d'autres réponses est parfois incohérente. Par exemple:
───────────────────────────────────────────────────────────────────────────────
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 première instance est probablement une photo de l'appareil photo et la deuxième que j'ai prise à l'aide d'une capture d'écran.
La identify
commande, sur laquelle ma réponse est basée, semble fonctionner correctement dans tous les cas. Par exemple, tester sur la première instance ci-dessus:
rick@dell:~/Pictures$ identify "256 colors.jpg"
256 colors.jpg JPEG 800x800 800x800+0+0 8-bit sRGB 45KB 0.000u 0:00.000
J'ai installé ImageMagick qui me permet d'utiliser:
$ 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
Pour un rapport de synthèse, omettez tous les paramètres:
$ identify vnStat.png
vnStat.png PNG 410x121 410x121+0+0 8-bit sRGB 14.7KB 0.000u 0:00.000
Remplacez-le vnStat.png
par votre propre .png
nom de fichier et faites- le précéder du chemin si nécessaire.
Pour comprendre PNG-24 vs PNG-32, cette réponse de SuperUser la résume:
Si votre image est en 24 bits, vous verrez:
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
Si votre image PNG est de 32 bits, vous verrez:
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
alpha: 8-bit
Cependant, cette réponse n'est pas complète car la couleur 8 bits affiche également 8 bits pour le rouge, le vert et le bleu, seule une palette de couleurs est utilisée pour limiter le nombre de sélections (comme dans le bon vieux Windows 2.0).
Examinez ces trois images de l'article de profondeur de Wikipedia :
Nom de fichier: 8_bit.png
En utilisant:
identify -verbose 8_bit.png | grep colors
png:PLTE.number_colors: 249
On voit qu'il y a 249 couleurs utilisées. Le maximum possible avec 8 bits est de 256 couleurs.
Nom de fichier: 4_bit.png
En utilisant:
identify -verbose 4_bit.png | grep colors
png:PLTE.number_colors: 16
Nous voyons qu'il y a 16 couleurs utilisées, ce qui correspond au maximum de combinaisons de couleurs possibles avec 4 bits.
Nom de fichier: 2_bit.png
En utilisant:
$ identify -verbose 2_bit.png | grep colors
png:PLTE.number_colors: 4
Nous voyons qu'il y a 4 couleurs utilisées, ce qui correspond au maximum de combinaisons de couleurs possibles avec 2 bits.
identify -format %z
- voir les options de formatage d'ImageMagick pour plus.PNG 32 bits (8 bits par canal - avec alpha, également appelé «PNG 24 bits avec 8 bits d'alpha» ou «PNG24 avec alpha»):
PNG 24 bits (8 bits par canal - pas de canal alpha)
PNG 8 bits (256 couleurs):
la source
file
est mon principal outil d'identification de fichier et je suis toujours étonné de voir à quel point il peut en dire même sur les formats de fichiers exotiques. Certes, sa mise en œuvre a un peu augmenté depuis les années 80 :)Si exiftool est installé, vous pouvez faire:
la source
À la manière du pirate: jetez un œil aux vrais octets à l'intérieur du morceau PNG IHDR .
Le premier chiffre vous indique la profondeur de bit. Le second, le type de couleur (2 est pour les images RVB, c'est-à-dire les images avec trois canaux ou trois valeurs d'échantillonnage par pixel).
Par conséquent, dans ce cas, nous avons un PNG RGB8 (24 bits par pixel).
la source
Comme alternative à l'utilisation ci-dessus de "fichier" qui repose sur la magie des fichiers dans l'en-tête du fichier PNG, si vous travaillez avec des fichiers PNG, il est utile d'avoir le package " pngtools " installé.
pnginfo peut ensuite être utilisé pour donner tous les détails sur les propriétés du fichier PNG, y compris BitDepth (Bits / Sample) (qui ne doit pas être confondu avec une autre propriété, Pixel Depth).
L'équivalent pour les fichiers JPEG est jpeginfo, dans son propre package jpeginfo.
Le format de la sortie de pnginfo facilite l'extraction de la valeur de BitDepth (car il se trouve sur une ligne distincte) s'il est utilisé dans un script shell.
Si le fichier n'est pas réellement un fichier PNG, parce que par exemple c'est un JPEG mal nommé, alors pnginfo rapportera "Ce fichier n'est pas un fichier PNG valide".
Comme toujours, l'outil approprié pour le travail est déterminé, entre autres, par la fréquence à laquelle vous allez utiliser l'outil et la façon dont vous souhaitez traiter la sortie.
la source