bmp文件用Pixels方式取得的颜色值跟TRGBquad格式转换不对?

zhhf1025 2008-03-15 05:31:30
问题是这样的

我用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值呢
...全文
81 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
christ115 2008-05-03
  • 打赏
  • 举报
回复
一般来说bmp图像数据的原点在左下角,也就是说数据是从图像最后一行开始的。而且需要注意每行数据是4的整数。
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
不会,帮顶
Rex_love_Burger 2008-04-07
  • 打赏
  • 举报
回复
你确定你的bmp是pf24bit的么?

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧