关于Tjpegimage(100分)

D

dd

Unregistered / Unconfirmed
GUEST, unregistred user!
程序段如下:
var
i: integer;
asbmp: array[1..20] of tbitmap;
tmpjpg: tjpegimage;
begin
tmpjpg:=tjpegimage.Create;
tmpjpg.Smoothing:=true;
for i:=1 to 20 do
begin
tmpjpg.LoadFromFile('data/'+inttostr(i)+'.jpg');
tmpjpg.SaveToFile('temp/'+inttostr(i)+'.jpg'); //检测用
asbmp:=tbitmap.Create;
asbmp.width:=192;
asbmp.height:=142;
asbmp.pixelformat:=pf24bit;
asbmp.canvas.StretchDraw(rect(0,0,192,142),tmpjpg);
asbmp.savetofile('temp/'+inttostr(i)+'.bmp'); //检测用
end;
tmpjpg.free;
end;
其中data/有1.jpg....20.jpg

运行后temp/下1.jpg....20.jpg与data/一一对应.

但temp/1.bmp....20.bmp中全都是1.jpg中的图像,似乎tmpjpg第一次load后
并没更新一样!

另:将tmpjpg:=tjpegimage.create; 和 tmpjpg.free 加入for循环中又正常了

WHY ?????

THANKS!
 
TBitmap.free;
加入for循环中试试
 
1.你的tbitmap是临时变量,在子程序中声明,结束时一定要free,
2.使用assign的方式可以稳定一些
 
解释一下:
asbmp[]以后要用,用完自然会FREE

但现在问题是:

比如 WORK/1.JPG 是苹果图片,2.JPG是
香蕉,3.JPG是桔子......

运行后TEMP/1.JPG是苹果,2.JPG是香蕉....

但TEMP/1.BMP是苹果,2.BMP也是苹果,
3.BMP--20.BMP全是苹果

又BMP和JPG大小不一样,ASSIGN可以吗?
 
dd,你的程序我试过了,在D3(5.53)中确实存在这问题,在D4中却没这问题,怀疑是
d3的jpeg有bug,Delphi没提供jpeg的源码,不知道问题确切所在.
 
是Delphi的Jpeg.dcu有问题,我有一个带源码的JpegImage,测试过了,
如以下代码:
procedure TForm1.Button1Click(Sender: TObject);
var Bitmap:TBitmap;
JpegImage1:TJpegImage;
begin
JpegImage1:=TJpegImage.Create(self);//创建可视控件,但不让它显示
JpegImage1.LoadFromFile('C:/1.jpg');
Bitmap:=tbitmap.Create;
Bitmap.width:=192;
Bitmap.height:=142;
Bitmap.pixelformat:=pf24bit;
Bitmap.canvas.StretchDraw(rect(0,0,192,142),JpegImage1.Picture.Bitmap);
Bitmap.SaveToFile('C:/1.bmp');
JpegImage1.LoadFromFile('C:/2.jpg');
Bitmap:=tbitmap.Create;
Bitmap.width:=192;
Bitmap.height:=142;
Bitmap.pixelformat:=pf24bit;
Bitmap.canvas.StretchDraw(rect(0,0,192,142),JpegImage1.Picture.Bitmap);
Bitmap.SaveToFile('C:/2.bmp');
Bitmap.Free;
JpegImage1.Free;
end;
一切Ok,mail to you 一份。enjoy it.
以下地方也有:
ftp.fortunecity.com
user:chenkeftp
password:chenkeftp
get jpgimg.zip 320K
 
TJpegImage中有一个protected method Draw可以用来向其他的Canvas中画图像,
不妨试一试
 
试试TJPEGIMAGE的DRAW方法
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
732
import
I
I
回复
0
查看
708
import
I
I
回复
0
查看
583
import
I
I
回复
0
查看
691
import
I
顶部