24位位图转单色位图(100分)

  • 主题发起人 主题发起人 violetxh
  • 开始时间 开始时间
V

violetxh

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟在写一个小软件中有一些图片数据要存储(黑白图片),如果存储时采用单色位图可以大大减小存储空间,提高读取速度。哪位高手能帮个忙?
img.Picture.Bitmap.PixelFormat:=pf1bit;//单色位图
写一段代码将24位位图转单色位图
 
没人会吗?兄弟们帮帮忙!
 
需要有分色度转化吗,可以自己根据数据格式调整。
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1286753
 
如果对图像要求不是过分细致,下面的最简单:
image1.Picture.Bitmap.PixelFormat:=pf4bit;
image1.Picture.Bitmap.Monochrome:=true;
 
先转黑白,再处理。32位彩转黑白代码如下,参照修改:
type
myrgb=record
r,g,b:byte;
end;

var p:^myRGB;
begin
with bmp do
for i := 0 to Height - 1 do
begin
p := scanline;
for ii := 0 to Width - 1 do
begin
j := (p.b * 30 + p.g * 59 + p.r * 11) div 100;
FillChar(p^, 3, j);
inc(p);
end;
end;
end;
 
luqiao的算法是RGB转灰度,还是24位的数据。
不理解楼主为什么想要看二值图象,
如果是为了减少存储空间,那就干脆,存储成01文件,也不要什么bmp头。
每一个象素点灰度值大于128就存为1,否则存为0。一个比特表示一个象素点
自己再写一个显示程序就是了。
 
感谢大家!问题解决了!
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
923
DelphiTeacher的专栏
D
D
回复
0
查看
715
DelphiTeacher的专栏
D
后退
顶部