我正在尝试在Windows 7/64位专业版上使用GDI+加载灰度PNG文件。然而,如果我使用Image::GetPixelFormat()返回的值,它告诉我像素格式为
如果我将此PNG转换为JPG和/或TIFF,则现在它告诉我像素格式现在是
查看这些值的定义here并没有提供太多信息。然而,查看它们here,揭示了
我的问题是:
这甚至是与
PixelFormat32bppARGB
。如果我将此PNG转换为JPG和/或TIFF,则现在它告诉我像素格式现在是
PixelFormat8bppIndexed
。查看这些值的定义here并没有提供太多信息。然而,查看它们here,揭示了
PixelFormat32bppARGB
实际上是(10 | (32 << 8) | PixelFormatAlpha | PixelFormatGDI | PixelFormatCanonical)
的结果。我的问题是:
- 以下内容是什么意思:
PixelFormatCanonical: Is in canonical format
? - 我知道GDI+可以将单个组件的灰度图像表示为32bpp ARGB,非预乘alpha,但是我如何检查底层表示实际上是灰度的?这将证明很有用,因为我只想从ARGB缓冲区复制一个组件。
以下是使用UNIX shell中的pnginfo
命令从PNG文件获取的一些信息:
$ pnginfo input.png
input.png...
Image Width: 2492 Image Length: 3508
Bitdepth (Bits/Sample): 8
Channels (Samples/Pixel): 1
Pixel depth (Pixel Depth): 8
Colour Type (Photometric Interpretation): GRAYSCALE
Image filter: Single row per byte filter
Interlacing: No interlacing
Compression Scheme: Deflate method 8, 32k window
Resolution: 11811, 11811 (pixels per meter)
FillOrder: msb-to-lsb
Byte Order: Network (Big Endian)
Number of text strings: 0 of 0
这甚至是与
wine
实现GDI+相关的问题。当前wine 1.6.2也认为我的输入PNG实际上是:PixelFormat8bppIndexed
。