急急,都问两次了,众大侠救兄弟一救!!?(关于bmp处理)

thermometer 2001-06-14 09:34:00
用TBitMap对象load了一个硬盘中的bmp文件,现在想得到该bmp的BITMAPINFOHEADER,怎么做?
...全文
113 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
thermometer 2001-06-20
  • 打赏
  • 举报
回复
thermometer 2001-06-20
  • 打赏
  • 举报
回复
我已经解决了,用
var DS: TDIBSection;
然后
GetObject(bmp.Handle, SizeOf(DS), @DS);
就可以了。
pipai 2001-06-14
  • 打赏
  • 举报
回复
提醒:要养成看delphi提供的source和demos的习惯
pipai 2001-06-14
  • 打赏
  • 举报
回复
看delphi目录下的source\vcl\graphics.pas中的TBitmap.ReadStream和TBitmap.ReadDIB实现,你会大有收获的
thermometer 2001-06-14
  • 打赏
  • 举报
回复
我想知道我的代码问什么调用API失败?8-<
无果和尚 2001-06-14
  • 打赏
  • 举报
回复
GetDIB会自动转化成DIB格式的。具体参见DELPHI HELP
无果和尚 2001-06-14
  • 打赏
  • 举报
回复
用GetDIBSizes得到SIZE
用GetDIB来得到HEADINFO。
thermometer 2001-06-14
  • 打赏
  • 举报
回复
555555
thermometer 2001-06-14
  • 打赏
  • 举报
回复
不管用,高手都来指点一下,我会加分的。
shxiaoxiao 2001-06-14
  • 打赏
  • 举报
回复
好像还需要给binfo:TBitmapInfo用SizeOf指定内存空间的
thermometer 2001-06-14
  • 打赏
  • 举报
回复
为什么GetDIBits调用失败, 我的代码
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
bmp:tbitmap;
binfo:TBitmapInfo;
pbuf:pchar;
buf:array of char;
begin
bmp:=Tbitmap.Create;
bmp.LoadFromFile('c:\2.bmp');
image1.Picture.Bitmap:=bmp;
setlength(buf,(bmp.Height*bmp.Width*3)); //先假设是24bit的bmp
bmp.HandleType:=bmDIB;
pbuf:=@buf;
i:=getdibits(form1.Handle, bmp.Handle,0,bmp.Height,pbuf,binfo,DIB_RGB_COLORS);
showmessage(inttostr(i));

end;
结果i=0,帮帮我?
wonderxin 2001-06-14
  • 打赏
  • 举报
回复
BITMAPINFOHEADER?
musicwind 2001-06-14
  • 打赏
  • 举报
回复

详细见 WindowsApi GetDIBits

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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