(300分)Delphi 的Jpeg真的这么差?!!(100分)

  • 主题发起人 主题发起人 netkk
  • 开始时间 开始时间
N

netkk

Unregistered / Unconfirmed
GUEST, unregistred user!
以下的问题不能通过正常的方法解决(DELPHI):

有一个aaa.JPG (大于1M) 文件,先用其它工具转为aaa.BMP,
在代码中实现 BMP->JPG 如下:
var
jpg:Tjpegimage;
bmp:Tbitmap //或 pic:Tpicture
begin
jpg:=Tjpegimage.create;
bmp:Tbitmap.create;
bmp.loadfromfile('aaa.bmp');
jpg.assign(bmp);
jpg.CompressionQuality:=75;
//jpg.Compress; //该语句执行与否,结果都一样
jpg.savetofile('bbb.jpg'); //或 savetostream
jpg.free;
bmp.free;
end;
以上代码中,如果 aaa.bmp为小文件(1-2M)没有问题,
但如果aaa.bmp为大文件时(>5M),则会出现“JPEG Err#36”
的内容。经观察发现是jpeg.pas单元在压缩JPG时出现内部错误。
另加上一句: 如不用jpg.CompressionQuality:=75则有时可以通过,但这不可能,因我必须改变这个值。

对以上问题,希望有经验的高手提供解决方法。
 
jpeg是无源代码的,无法分析。
若觉不行,可试一试其他jpeg控件。
深度历险里有
PASJPG10.ZIP (336k)
Independent JPEG Group 的免费 JPEG 函式库 rev 6a 之 Pascal 版本
(1.0 版,附源码 )。作者 :Jacques Nomssi Nzali。
可一试。(我没试)
 
netkk,我用你的代码试了试,在我的机器上完全正确!
我用了11M的24bit,8bit和灰度图,都是对的。我的Delphi是4.0[build 5.33],你在试试。
 
artx:
我原来用DELPHI5,后来用DELPHI4试过了,还是不行。
另外有一点补充(应该跟问题没关系):我的图片是用OFFICE的照片编辑器保存的。

 
看看是不是与硬件有关。
to artx和netkk:
把你们的机器配置列出来,再看一下吧。
 
我的配置:PII450+TNT+128MB RAM
你再用Photoshop处理的图试一试,若不行,把你具体源程序给我看看...
 
可能是你的Jpeg.dcu单元有问题,换一个别人的Jpeg.dcu单元试一试。
因我以前也遇到过相似的问题--ZLIB能压缩不能解压。
 
我也试了一下,没问题。画笔做的45M的24位图挺快就处理完了。
用15和75的压缩比。
我内存132M,PII333,烂显卡
 
和显卡无关吧!
jpeg不是没有源码,只不过都是c的,在delphi的光碟中。
 
接受答案了.
 

Similar threads

后退
顶部