多重复几次后,就会弹出jpeg error #52,Why? 还有一点很奇怪.. (老千,你帮我看看阿。) (10分)

  • 主题发起人 主题发起人 狼牙
  • 开始时间 开始时间

狼牙

Unregistered / Unconfirmed
GUEST, unregistred user!
前面几次读取不出错,但多重复几次后,就会弹出jpeg error #52,Why?
d还有一点很奇怪,就是win2000读取win98的多几次就出错。win98读win2000死都不出错。
为什么阿????靠。
 
这是图片格式不对的错误,也就是说,比如:
var
jpg:TJpegImage;

....
jpg:=TJpegImage.create;
jpg.loadfromfile('*.gif');
..
你用jpeg去load一个不是jpg的文件,就会有这个错误。
 
是这样的。是用cs/ss做的远程屏幕抓取,在开头就能够顺利的切换读出不同机器画面,
但多重复几次后,就会弹出jpeg error #52,我查过了说明。该错误指:
not a jpg file ,starts with 0x%02x 0x%02x
(需要该jpeg出错提示的朋友请到http://delphi.mychangshu.com/我已传上去。)
请教各位如何解决?我查过以前帖子,也曾有朋友提过此事,说重复就会出错,
需要修改源码???请指教!
bitblt(image.canvas.handle,0,0,image.width,image.height,ss.handle,0,0,srccopy);
jpgstream:= TJPEGImage.Create;
jpgstream.Assign(image.picture.bitmap);
jpgstream.CompressionQuality:=60; //压缩质量可已调整。
jpgstream.Compress;
jpgstream.SaveToStream(BmpStream);
jpgstream.free;
BmpStream.Position:=0;
bmpsize:=BmpStream.Size;
ReleaseDC(0,ss.Handle);
image.free;
 
老千阿。你能不能帮我看看。
 
我目前写的一个图形处理软件也出现过这个问题,后来解决了,是因为没有真正的生成jpg

你参考一下我的代码:以位图为例
procedure TForm1.ConvertClick(Sender: TObject);
var
tempStr:AnsiString;
tempBmp:TBitmap;
jpgFile:TJPEGImage;
begin
tempBmp:=TBitmap.Create;
jpgFile:=TJPEGImage.Create;
try
tempBmp.LoadFromFile(srcFileName);
//以下三步实现文件格式的转变
tempStr:=ChangeFileExt(srcFileName,'.jpg');//needed
jpgFile.Assign(tempBmp);
jpgFile.SaveToFile(tempStr);
//jpgFile.LoadFromFile(tempStr);
finally
jpgFile.Free;
tempBmp.Free;
end;

Image1.Picture.LoadFromFile(tempStr);
end
srcFileName是装载时的文件名
 
后退
顶部