我有一个 PNG 文件,但我不知道它是 PNG-8 还是 PNG-24?
答案1
32 位 PNG(每通道 8 位 - 带 alpha,也称为“带 8 位 alpha 的 24 位 PNG”或“带 alpha 的 PNG24”):
$ file zyne_zyne.png:
PNG image data, 64 x 64, 8-bit/color RGBA, non-interlaced
24 位 PNG(每通道 8 位 - 无 alpha 通道)
$ file 24.png
PNG image data, 1060 x 821, 8-bit/color RGB, non-interlaced
8 位 PNG(256 色):
$ file 8bit.png
PNG image data, 1060 x 821, 8-bit colormap, non-interlaced
答案2
其他答案中的命令file
使用有时不一致。例如:
───────────────────────────────────────────────────────────────────────────────
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
第一个实例可能是相机照片,第二个实例是我使用屏幕截图拍摄的。
我的答案所基于的命令identify
似乎在所有情况下都能正常工作。例如,在上面的第一个实例上进行测试:
rick@dell:~/Pictures$ identify "256 colors.jpg"
256 colors.jpg JPEG 800x800 800x800+0+0 8-bit sRGB 45KB 0.000u 0:00.000
我有图像魔术师安装后我可以使用:
$ 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
对于摘要报告,请省略所有参数:
$ identify vnStat.png
vnStat.png PNG 410x121 410x121+0+0 8-bit sRGB 14.7KB 0.000u 0:00.000
vnStat.png
如有必要,请用您自己的文件名替换.png
并在其前面加上路径。
要了解 PNG-24 与 PNG-32,请参阅以下答案超级用户总结一下:
如果您的图像是 24 位,您将看到:
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
如果您的 PNG 图像是 32 位,您将看到:
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
alpha: 8-bit
但是这个答案并不完整,因为 8 位颜色也显示红色、绿色和蓝色的 8 位,仅使用调色板来限制选择的数量(就像在旧的 Windows 2.0 中一样)。
看看这三张图片维基百科深度文章:
文件名:8_bit.png
使用:
identify -verbose 8_bit.png | grep colors
png:PLTE.number_colors: 249
我们看到使用了 249 种颜色。8 位最多可以显示 256 种颜色。
文件名:4_bit.png
使用:
identify -verbose 4_bit.png | grep colors
png:PLTE.number_colors: 16
我们看到使用了 16 种颜色,这是 4 位可能的最大颜色组合。
文件名:2_bit.png
使用:
$ identify -verbose 2_bit.png | grep colors
png:PLTE.number_colors: 4
我们看到使用了 4 种颜色,这是 2 位可能的最大颜色组合。
答案3
如果你有外置工具安装后,你可以执行以下操作:
bash-4.3# exiftool continents_blank_l.png ExifTool 版本号:10.20 文件名:continents_blank_l.png 目录 : 。 文件大小:170 kB 文件修改日期/时间 : 2016:07:05 07:59:28+05:30 文件访问日期/时间 : 2017:08:07 00:35:15+05:30 文件 Inode 更改日期/时间 : 2016:07:05 07:59:28+05:30 文件权限:rw-r--r-- 文件类型:PNG 文件类型扩展名:png MIME 类型 :image/png 图片宽度:1100 图片高度:850 位深度:8 颜色类型:带 Alpha 的 RGB 压缩:放气/充气 滤波器:自适应 隔行扫描:非隔行扫描 背景颜色:255 255 255 每单位像素数 X :3937 每单位 Y 像素数:3937 像素单位:米 修改日期 : 2016:07:05 02:29:28 图片尺寸 : 1100x850 百万像素:0.935
答案4
作为上述使用“文件”的替代方法,该方法依赖于 PNG 文件头中的文件魔法,如果使用 PNG 文件,则使用“png工具“包已安装。
png信息然后可以用来提供 PNG 文件的属性的完整详细信息,包括 BitDepth(位/样本)(不要与另一个属性“像素深度”混淆)。
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
...
JPEG 文件的等效项是 jpeginfo,在其自己的包 jpeginfo 中。
如果在 shell 脚本中使用 pnginfo 的输出格式,则可以更轻松地提取 BitDepth 的值(因为它位于单独的行上)。
如果该文件实际上不是 PNG 文件(例如,因为它是错误命名的 JPEG),则 pnginfo 将报告“此文件不是有效的 PNG 文件”。
与往常一样,适合该工作的工具取决于您使用该工具的频率以及您希望如何处理输出等因素。