我有一个关于我正在尝试阅读的PNG文件的问题(我在此问题中附上了它)
文件大小为328750字节 宽度660 高度330 颜色类型 - truecolor 位深度 - 24位
所以这是我的问题。如果它是真彩色,我认为它是RGB,即24位。但你做数学,数字不加起来。 660(宽度)* 330(高度)* 3个字节(从24位)= 653400字节,这是实际文件大小的两倍。
为什么?
我试图读取IDAT块,假装每个像素是3个字节,我试图检查颜色,它与显示的不匹配。
答案 0 :(得分:0)
PNG是一种压缩图像格式,因此IDAT块包含RGB像素的zlib压缩表示。您访问像素数据的最简单方法可能是使用ImageMagick或GraphicsMagick等转换器将图像解压缩到Netpbm" PPM"格式。
magick image.png image.ppm
或
gm convert image.png image.ppm
然后阅读" image.ppm"就像你试图阅读PNG一样。只需跳过短标题,如果您的图像是
P 6 \n 6 6 0 3 3 0 \n 2 5 5 \n
其中" P6"是幻数,660和330是尺寸,255是图像深度(R,G和B的最大值是255或0xff)。文件的其余部分只是您期望的R,G,B值。