图像压缩,图像指针复位问题。请大家关注。谢谢!! (100分)

  • 主题发起人 主题发起人 flycity001
  • 开始时间 开始时间
F

flycity001

Unregistered / Unconfirmed
GUEST, unregistred user!
[:D]1、在Delphi中除了将图片压缩成JPEG,还有没有其它的压缩方法更好的(比JPEG更小,或是品质更高)。
2、怎么复位图像的指针。像在流中一样,有一个Position=0可以复位。在Tbitmap 或 是在Tjpegimage中要怎么做呢?

比如说我抓取的屏幕,得到了一个位图句柄。。。
源码:
width:=screen.Width;
height:=screen.Height;
sourcedc:=createdc('display','','',nil);
destdc:=createcompatibledc(sourcedc);
bhandle:=createcompatiblebitmap(sourcedc,Width,height);
selectobject(destdc,bhandle);
bitblt(destdc,0,0,width,height,sourcedc,0,0,SRCCOPY);//抓取的屏幕
map:=tbitmap.Create;
map.Handle:=bhandle;
map.savetofile('c:/wy/screen.bmp');//
map.LoadFromFile('c:/wy/screen.bmp');//如果去了这两句就不能显示出图片了。
form1.Canvas.Draw(0,0,map);
 
先给位图设定宽、高度
 
map:=tbitmap.Create;
map.Handle:=bhandle;
map.height:=your height;
map.width:=your width;
map.pixformat:=pf16bit;
form1.Canvas.Draw(0,0,map);
 
jpg综合来说还是很好的那,其他的试试jpeg2000,据说也不错
 
to wql: 谢谢这位大哥,前一个决了问题,不过如果我把map.pixformat:=pf16bit;
更改为1位或是4位,8位,就会报错“”内存空间不足,无法处理此命令“这是为什么?
应该怎么处理?
to huazai:这位大哥,能不能说清楚一点,jpeg2000应该怎么用?
 
多人接受答案了。
 
后退
顶部