Tengo un archivo PNG pero no puedo decir si es PNG-8 o PNG-24.
fuente
Tengo un archivo PNG pero no puedo decir si es PNG-8 o PNG-24.
El file
uso del comando en otras respuestas es a veces inconsistente. Por ejemplo:
───────────────────────────────────────────────────────────────────────────────
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
Es probable que la primera instancia sea una imagen de cámara y la segunda instancia que tomé usando una captura de pantalla.
El identify
comando, en el que se basa mi respuesta, parece funcionar correctamente en todos los casos. Por ejemplo, probando en la primera instancia anterior:
rick@dell:~/Pictures$ identify "256 colors.jpg"
256 colors.jpg JPEG 800x800 800x800+0+0 8-bit sRGB 45KB 0.000u 0:00.000
Tengo instalado ImageMagick que me permite usar:
$ 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
Para un informe resumido, omita todos los parámetros:
$ identify vnStat.png
vnStat.png PNG 410x121 410x121+0+0 8-bit sRGB 14.7KB 0.000u 0:00.000
Reemplácelo vnStat.png
con su propio .png
nombre de archivo y prefacio con la ruta si es necesario.
Para comprender PNG-24 vs PNG-32, esta respuesta de SuperUser lo resume:
Si su imagen es de 24 bits, verá:
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
Si su imagen PNG es de 32 bits, verá:
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
alpha: 8-bit
Sin embargo, esta respuesta no está completa porque el color de 8 bits también muestra 8 bits para Rojo, Verde y Azul, solo se usa una paleta de colores para limitar el número de selecciones (como en el viejo Windows 2.0).
Examine estas tres imágenes del artículo de profundidad de Wikipedia :
Nombre del archivo: 8_bit.png
Utilizando:
identify -verbose 8_bit.png | grep colors
png:PLTE.number_colors: 249
Vemos que hay 249 colores usados. El máximo posible con 8 bits es de 256 colores.
Nombre del archivo: 4_bit.png
Utilizando:
identify -verbose 4_bit.png | grep colors
png:PLTE.number_colors: 16
Vemos que se usan 16 colores, que es la combinación de colores máxima posible con 4 bits.
Nombre del archivo: 2_bit.png
Utilizando:
$ identify -verbose 2_bit.png | grep colors
png:PLTE.number_colors: 4
Vemos que se usan 4 colores, que es la combinación de colores máxima posible con 2 bits.
identify -format %z
: consulte las opciones de formato de ImageMagick para obtener más información.PNG de 32 bits (8 bits por canal - w / alfa, también llamado "PNG de 24 bits con 8 bits de alfa" o "PNG24 con alfa"):
PNG de 24 bits (8 bits por canal, sin canal alfa)
PNG de 8 bits (256 colores):
fuente
file
es mi principal herramienta de identificación de archivos y siempre me sorprende lo mucho que puede decir incluso sobre formatos de archivos exóticos. Por supuesto, su aplicación creció un poco desde los años 80 :)Si tiene instalado Exiftool , puede hacer lo siguiente:
fuente
El camino del hacker: mira los bytes reales dentro del fragmento PNG IHDR .
El primer número te dice la profundidad de bits. El segundo, el tipo de color (2 es para imágenes RGB, es decir, imágenes con tres canales o tres valores de muestra por píxel).
Por lo tanto, en este caso tenemos un PNG RGB8 (24 bits por píxel).
fuente
Como alternativa al uso anterior de "archivo" que se basa en la magia del archivo en el encabezado del archivo PNG, si se trabaja con archivos PNG, es útil tener instalado el paquete " pngtools ".
pnginfo se puede usar para dar detalles completos de las propiedades del archivo PNG, incluyendo BitDepth (Bits / Sample) (que no debe confundirse con otra propiedad, Pixel Depth).
El equivalente para archivos JPEG es jpeginfo, en su propio paquete jpeginfo.
El formato de la salida de pnginfo facilita la extracción del valor de BitDepth (ya que está en una línea separada) si se usa en un script de shell.
Si el archivo no es en realidad un archivo PNG, porque, por ejemplo, es un archivo JPEG con un nombre incorrecto, pnginfo informará "Este archivo no es un archivo PNG válido".
Como siempre, la herramienta adecuada para el trabajo está determinada, entre otras cosas, por la frecuencia con la que va a utilizar la herramienta y cómo desea procesar la salida.
fuente