bmp文件用Pixels方式取得的颜色值跟TRGBquad格式转换不对?
问题是这样的
我用pixels方式取得一个bmp位图中心点的颜色值:color:=bmp.Canvas.Pixels[bmp.Width div 2,bmp.Height div 2];取得的确实是我满意的图像中心点颜色值。
但是我后来想用另外一种方式
就是,我读取这个bmp位图,然后读取这个位图的图像数据(这个我肯定没有读取错,就是除去14字节的位图文件头+40字节的位图信息头+1024字节的调色板数据,剩下的就是bmp的像素数据),我读取了这片数据,然后读取其中代表[bmp.Width div 2,bmp.Height div 2]这个偏移位置的像素值。
也就是bmp位图中心点的像素值,然后用这个值在调色板中找到其对应的偏移位置的颜色值,得到一个trgbquad(或者直接用array [0..3] of byte来接收也一样)。
然后我用这个得到的trgbquad值,用函数rgb转换成tcolor值,结果却跟bmp.Canvas.Pixels[bmp.Width div 2,bmp.Height div 2];获取的颜色值相差好远。
我实在不知道到底我的做法错在哪里。
另外,我知道调色板的R G B颜色分量的存放是B G R顺序。但不管我按照B G R还是 R G B来转,都一样想去好远。是否这个函数不能这样转?那应该怎么通过这样的方式获取tcolor值呢