为什么我从一个640*480*24b的图象中裁剪100*133下来的图象后变成了100*133*15b(50分)

  • 主题发起人 主题发起人 lmcui
  • 开始时间 开始时间
L

lmcui

Unregistered / Unconfirmed
GUEST, unregistred user!
不是24位真彩色了,大家帮忙看看,切割的代码片断如下,
procedure TMainForm.SplitImage(RBx,RBy,REx,REy: Integer; ImgName: string);
//切割的图象为ImgSrc,是一个TImage
//RBx,RBy: 图象片断的起始坐标
//REX,REy: 结束坐标
//ImgName: 目标文件名
var
SrcRec,DstRec: TRect;
tmpImage : TImage;
begin
tmpImage := TImage.Create(Application);
tmpImage.Stretch := False;
tmpImage.AutoSize := False;

tmpImage.Width := REx - RBx;
tmpImage.Height := REy - RBy;
SrcRec := Rect(RBx,RBy,REx,REy);
DstRec := Rect(0,0,REx-RBx,REy-RBy);

tmpImage.Canvas.CopyRect(DstRec,ImgSrc.Canvas,SrcRec);

tmpImage.Center := True;
tmpImage.AutoSize := True;
tmpImage.Picture.SaveToFile(ImgName);

FreeAndNil(tmpImage);

end;
 
tmpImage := TImage.Create(Application); 后面加一句:
tmpImage.Picture.Bitmap.PixFormat := pf24Bit;

 
Another_eYes:
不行啊,切割后图象就无法识别了,怎么回事?
 
可能是你的图片的关系,你换一张图片试试。
 
还是不行
 
问题解决了,但是应该在切割完毕后使用
tmpImage.Picture.Bitmap.PixFormat := pf24Bit;
否则保存的图象长度为零。
 
后退
顶部