procedure TWICImage.LoadFromStream(Stream: TStream);
var
LStream: TStreamAdapter;
BitmapDecoder: IWICBitmapDecoder;
LBitmapFrame: IWICBitmapFrameDecode;
LGUID: TGUID; procedure WicCheck(Result: HRESULT);
begin
if Failed(Result) then
raise EInvalidGraphic.Create(SInvalidImage);
end;
begin
FreeAndNil(FBitmap); FData.Clear;
FData.CopyFrom(Stream, Stream.Size - Stream.Position);
FData.Position := 0;
LStream := TStreamAdapter.Create(FData); // 要把这个函数的变量释放掉,它导致内存泄露,烦死了 WicCheck(FImagingFactory.CreateDecoderFromStream(LStream, guid_null, WICDecodeMetadataCacheOnDemand, BitmapDecoder));
WicCheck(BitmapDecoder.GetContainerFormat(LGUID));
EncoderContainerFormat := LGUID;
WicCheck(BitmapDecoder.GetFrame(0, LBitmapFrame));
WicCheck(FImagingFactory.CreateBitmapFromSource(LBitmapFrame, WICBitmapCacheOnLoad, FWicBitmap));
WicCheck(FWicBitmap.GetSize(FWidth, FHeight)); FFormatChanged := False;
end;
var
LStream: TStreamAdapter;
BitmapDecoder: IWICBitmapDecoder;
LBitmapFrame: IWICBitmapFrameDecode;
LGUID: TGUID; procedure WicCheck(Result: HRESULT);
begin
if Failed(Result) then
raise EInvalidGraphic.Create(SInvalidImage);
end;
begin
FreeAndNil(FBitmap); FData.Clear;
FData.CopyFrom(Stream, Stream.Size - Stream.Position);
FData.Position := 0;
LStream := TStreamAdapter.Create(FData); // 要把这个函数的变量释放掉,它导致内存泄露,烦死了 WicCheck(FImagingFactory.CreateDecoderFromStream(LStream, guid_null, WICDecodeMetadataCacheOnDemand, BitmapDecoder));
WicCheck(BitmapDecoder.GetContainerFormat(LGUID));
EncoderContainerFormat := LGUID;
WicCheck(BitmapDecoder.GetFrame(0, LBitmapFrame));
WicCheck(FImagingFactory.CreateBitmapFromSource(LBitmapFrame, WICBitmapCacheOnLoad, FWicBitmap));
WicCheck(FWicBitmap.GetSize(FWidth, FHeight)); FFormatChanged := False;
end;
解决方案 »
- TIdTCPServer在OnExecute事件收到字符串,然后紧接着向TIdTCPClient发送字符串,为什么不执行?
- 如何在程序出错后继续运行出错的代码后面的代码?
- FastReport里的Script如何使用???
- 关于cpu使用率!
- 如何实现SQL2000的数据库在两个不相连接的局域网中实现共享
- 关于Email编码的问题
- 求图书管理系统的源代码!!!! (给分) [email protected]
- 如何判断EDIT中输入的网址是否合法?
- 快来看
- 获取即时聊天信息
- 买的QQ号密保又被卖号的改回去了,想自己写一个批量修改QQ密保的小软件,有没有delphi的QQRSA加密原码啊。
- 超难问题,散分了,POS.dll调用问题!
WicCheck(FImagingFactory.CreateDecoderFromStream(LStream, guid_null, WICDecodeMetadataCacheOnDemand, BitmapDecoder));这段代码,在我的电脑(XP系统)上执行没有问题,在另一台远程服务器(windows2003)上执行也没有问题。
但放在外网的服务器(windows2003)上就发生错误,导致错误的原因就是这句。哪位高手能有解释啊。