怎样改变jpg图像的大小?高分,急啊!(200分)

  • 主题发起人 主题发起人 j_xu
  • 开始时间 开始时间
J

j_xu

Unregistered / Unconfirmed
GUEST, unregistred user!
比如源图像1024×768,把它改变为800×600?
 
用Tcanvas的StretchDraw函数。
首先根据你的图象的大小得到一个大小。
把Arect的大小设为那个大小。再用方法
StretchDraw(ARect, Image1.Picture.Bitmap)
缩小图像,再把Arect的canvas复制到一个TImage的Canvas,
再存为文件应该可行。
 
to book523:
谢谢你的回复,但是我要在服务程序里批量转换,不能使用TCanvas对象啊!
或者我对你提供的方法理解有误。
 
那就不太清楚啊。
 
问题可以分两种解决:
1、图像缩小:可以通过以下语句进行缩小。
function ShrinkJpeg( Jpg : TJpegImage;Scale : TJPEGScale ) : TJpegImage;
begin
Jpg.Scale := Scale;
Jpg.Compress;
Result := Jpg;
end;
//其中TJPEGScale可以取以下值:
//jsFullSize 不缩放
//jsHalf 缩小为原来的二分之一
//jsQuarter 缩小为原来的四分之一
//jsEighth 缩小为原来的八分之一

2、图像放大,稍微麻烦一些
function ZoomJpeg( Jpg : TJpegImage;R : TRect ) : TJpegImage;
var BMP : TBitmap;
begin
BMP := TBitmap.Create;
Result := TJpegImage.Create;
BMP.Canvas.StrechDraw( R,JPG );
Result.Assign( BMP );
end;
//由于TJpgImage类没有CANVAS成员,故借TBitmap类进行缩放是最有效的。
//多想想办法,其实网上还有数也数不清的图像处理控件可以供你免费使用。
//使用CANVAS也并不会受到你是SERVER还是简单APPLICATION,放心去用吧。
 
谢谢redleaf_wgm的回复,测试之后就给分!
 
问题己解决,谢谢各位捧场!
给分!
 
多人接受答案了。
 
TJpegImage哪里有
 
后退
顶部