请选择 进入手机版 | 继续访问电脑版

Lazarus中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 1455|回复: 0

lazarus下的32位Bitmap转24位

[复制链接]

该用户从未签到

发表于 2014-4-30 16:01:03 | 显示全部楼层 |阅读模式

       Delphi下,简单把PixelFormat设为pf24bit就可以了,但在lazarus下则不行(lazarus还有多少隐蔽的差异)。谷歌了很多关键字,没有想要的答案,但也可以找到线索,通过LazIntfImage进行转换。


[delphi] view plaincopy


  • Procedure Bmp32ToBmp24(src: TBitmap;dest:TBitmap);   
  • var  
  •   inf1,inf2:TLazIntfImage;  
  •   ImgFormatDescription: TRawImageDescription;  
  • begin  
  • inf2:=TLazIntfImage.Create(src.Width,src.Height);  
  • inf1:= src.CreateIntfImage;  
  • try  
  • ImgFormatDescription.Init_BPP24_B8G8R8_BIO_TTB(src.Width,src.Height);  
  • inf2.DataDescription:=ImgFormatDescription;  
  • inf2.CopyPixels(inf1);  
  • dest.PixelFormat:=pf24bit;  
  • dest.LoadFromIntfImage(inf2);  
  • finally  
  •    inf1.free;  
  •    inf2.Free;  
  • end;  
  • end;  

看了一些graphics单元的代码,感觉lazarus对图像的处理功能比delphi强大得多,但也复杂得多,其实这还不要紧,要命的是没有资料可查!!


原创博客:http://blog.csdn.net/rocklee


回复

使用道具 举报

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1

GMT+8, 2021-4-18 08:36 , Processed in 0.050551 second(s), 26 queries .

Powered by Discuz! F1.0 Build 20160930

© 2001-2021 Comsenz Inc. & Discuz! Fans

快速回复 返回顶部 返回列表