在delphi中读取16位灰度PNG中的像素值

时间:2014-02-07 14:42:34

标签: delphi-xe2

我一直在尝试从16位灰度图像(.PNG)读取像素值,但我无法提取16位值。它们总是以8位值出现。

使用此代码可以很好地加载图像:

PngImage := TPngImage.Create;  
PngImage.LoadFromFile(ImageFile);

PngImage.Header.ColorType returns: COLOR_GRAYSCALE
PngImage.Header.BitDepth returns: 16
然后我宣布变量:

pngrowdata,extrapngrowdata: pWordArray;

并使用以下方式阅读:

PngRowData := PngImage.Scanline[y];
ExtraPngRowData := PngImage.ExtraScanline[y];

其中y是图片中的行号。

问题在于,对于x PngRowData [x]的所有值都与ExtraPngRowData [x]相同,即我没有得到16位值的高字节和低字节。 Embarcadero帮助文件中的Extrascanline文档缺乏,只是声明此函数用于读取第二个字节 16位像素和Scanline用于读取第一个字节

有没有人有线索?只是为了检查使用的图像,我可以将其加载到ImageJ,在该程序中,像素可以很好地读取为16位整数。

克劳斯

0 个答案:

没有答案