如何将Timage下保存为压缩过的jpg文件?(100分)

  • 主题发起人 主题发起人 xiecc
  • 开始时间 开始时间
X

xiecc

Unregistered / Unconfirmed
GUEST, unregistred user!
我直接用Image1.Picture.SaveToFile('X.jpg');结果保存后的Jpg文件大小
与bmp文件的大小一样,后来我想用
TJpegImage(Image1.Picture.Graphic).Compress;
Image1.Picture.SaveToFile('X.jpg');
结果出错,请教有何办法?
 
将TImage中的图形传递给TJpegImage,
再调用TJpegImage的Compress和SaveToFile
 
呵呵,
你这么保存就是保存成bmp文件,不过后缀是jpg吧了。
 
这样是不能转换的,
看看帮助:
TJPEGImage has an internal bitmap that represents the JPEG image.
This internal image and the original source of the JPEG image are
~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
read only.
~~~~~~~~~~
 
hehe, try use canvas.copyrect, then save:)
 
var jpg:tjpeimage;
bmp:tbitmap;
begin
jpg:=tjpegimage.create;
jpg.assign(bmp);
jpg.picture.savetofile('x.jpg');

BTW: jpg格式默认好像就是压缩的吧? 不用显式调用compress
 
var
jpeg1:tjpegimage;
begin
jpeg1:=tjpegimage.create;
jpeg1.assign(image1.picture.graphic);
jpeg1.compress;
jpeg1.savetofile('test.jpg');
jpeg1.free;
end;
 
uses jpeg;

procedure TForm1.Button1Click(Sender: TObject);
var
jpeg1:TJpegImage;
begin
Jpeg1 := TJpegImage.Create;
Jpeg1.CompressionQuality := 50;
Jpeg1.Assign(Image1.Picture.Bitmap);
jpeg1.SaveToFile('c:/mydocu~1/liu.jpg');
end;

 
请继续讨论或结束问题
 
总的来说,用Tjegimage.assign把一个Tbitmap装入,再保存或输出就可以得到一个
*.jpeg图片文件,如果调用CompressionQuality属性你还可以调整压缩率(一般75
较合适)。
procedure TForm1.Button1Click(Sender: TObject);
var
jp1:TJpegImage;
begin
jp1 := TJpegImage.Create;
jp1.Assign(Image1.Picture.Bitmap);
jp1.SaveToFile('c:/x.jpg');
jp1.free;
end;
 
procedure ...
begin
with TJpegImage.Create do
try
CompressionQuality:=65;
Assgin(Image1.Picture.Graphic);
SaveToFile('c:/demo.jpg');
finally
Free;
end;
end;
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部