如何直接剪切Jpg的图像而无损质量(50分)

  • 主题发起人 主题发起人 小八哥
  • 开始时间 开始时间

小八哥

Unregistered / Unconfirmed
GUEST, unregistred user!
本人在写一个照片剪切程序,用image1显示直接从数码相机
取过来的Jpg格式的图片,再在image1上放了一个Shape做取
景框,把Shape套着的图片CopyRect到image2.
原本想用
Image2.Canvas.CopyRect(image2.ClientRect,image1.picture.bitmap.Canvas,image1Rect)
发现用CopyRect不能对Jpg的图像作操作,后来就用了一个取巧的方法。
Image2.Canvas.CopyRect(image2.ClientRect,Form1.Canvas,image1Rect)
这样照片是剪过来了,但是我发现这样过来的图片的质量明显比源图差,
简直是惨不忍暏。
我想问
1质量明显比源图差的原因是因为我用了Form1.Canvas的原因吗?
 如果不是,那又因为什么?
2如何直接剪切Jpg的图像而无损质量。

 
procedure TForm1.Button1Click(Sender: TObject);
var
Bitmap: TBitmap;
MyRect, MyOther: TRect;
begin
MyRect := Rect(10,10,100,100);
MyOther := Rect(10,111,100, 201);
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile('c:/n.bmp');
Form1.Canvas.CopyRect(MyOther,Bitmap.Canvas,MyRect); //为什么用Form1.Canvas.CopyRect可以
image1.Canvas.CopyRect(MyOther,Bitmap.Canvas,MyRect); //而用image1.Canvas.CopyRect不可以
Bitmap.Free;
end;
 
不会失真的
你可以先把 TJpegImage转化为TBitmap 再操作
 
To coolbaby
怎么个转法,能给个代码吗?
 
看以前的贴子,简单得很的
 
问题是解决了,但心中的疑问仍在。
 
后退
顶部