A
acer77g
Unregistered / Unconfirmed
GUEST, unregistred user!
关于BMP转JPG的例子已很多,没有问题,但转后进一步优化时出现错误。
以前的问题我也查过,某位大虾的问题和我类似,但没有解决,现重提一下。
//以下过程的目的是将一个大的JPG通过降低质量缩成小点的JPG.
procedure CompressJPG(const Jpgfilename1,JpgFilename2:string; CompressRate:integer);
var Jpg1,Jpg2:TJPEGImage; Bmp:TBitmap;
begin
Bmp :=TBitmap.Create;
Jpg1:=TJPEGImage.Create;
Jpg1.LoadFromFile(jpgfilename1);//读大JPG
Bmp .Assign(Jpg1);//放入临时BMP中
Jpg2:=TJPEGImage.Create;
Jpg2.Assign(Bmp);//倒进小JPG中
Jpg2.CompressionQuality:=CompressRate;//设置压缩率1~100间
Jpg2.Compress;//用不用该句无所谓,似乎有上句就行
Jpg2.SaveToFile(JpgFilename2.jpg);//到此句出现错误:JPG Error 36#
Jpg2.Free;
Jpg1.Free;
Bmp .Free;
end;
疑问:
1、我的硬盘剩余1G,内存256,将没用的进程都关了,也绝无病毒,2000打了30个补丁,所以应该不是系统的问题。
2、大的JPG1如果在1M以下,进一步压成200~300K的JPG2无问题。
3、即使JPG1有4M,压缩率设成70~100,也无问题,尽管压的效果不明显。
4、JPG1>4M,压缩率<70,问题来了!!!!!!!!
就算我系统有问题,那人家ACDSEE里面的图像转换为何就没事???
一个4M的JPG(高12000×宽800),35%优化,ACDSEE可压成1M,我就想那样的效果。
以前的问题我也查过,某位大虾的问题和我类似,但没有解决,现重提一下。
//以下过程的目的是将一个大的JPG通过降低质量缩成小点的JPG.
procedure CompressJPG(const Jpgfilename1,JpgFilename2:string; CompressRate:integer);
var Jpg1,Jpg2:TJPEGImage; Bmp:TBitmap;
begin
Bmp :=TBitmap.Create;
Jpg1:=TJPEGImage.Create;
Jpg1.LoadFromFile(jpgfilename1);//读大JPG
Bmp .Assign(Jpg1);//放入临时BMP中
Jpg2:=TJPEGImage.Create;
Jpg2.Assign(Bmp);//倒进小JPG中
Jpg2.CompressionQuality:=CompressRate;//设置压缩率1~100间
Jpg2.Compress;//用不用该句无所谓,似乎有上句就行
Jpg2.SaveToFile(JpgFilename2.jpg);//到此句出现错误:JPG Error 36#
Jpg2.Free;
Jpg1.Free;
Bmp .Free;
end;
疑问:
1、我的硬盘剩余1G,内存256,将没用的进程都关了,也绝无病毒,2000打了30个补丁,所以应该不是系统的问题。
2、大的JPG1如果在1M以下,进一步压成200~300K的JPG2无问题。
3、即使JPG1有4M,压缩率设成70~100,也无问题,尽管压的效果不明显。
4、JPG1>4M,压缩率<70,问题来了!!!!!!!!
就算我系统有问题,那人家ACDSEE里面的图像转换为何就没事???
一个4M的JPG(高12000×宽800),35%优化,ACDSEE可压成1M,我就想那样的效果。