みなさん、こんにちは。
ちょっと、お知恵を拝借m(_ _)m
以下のような関数を書いて実行すると、大概は正常にイメージ変換しますが、
WICImage.SaveToStreamが失敗したときに、TStreamAdapterでメモリリークが
起きます。(WIC対応のActiveXなどを利用したときにまれに起きる)
これを回避する手立てを探しています。
おわかりになる方がいらっしゃいましたら、お願いいたします。
function WicSave:Boolean;
var WICImage : TWICImage;
Mem : TMemoryStream;
begin
Result := False;
WICImage := TWICImage.Create;
try
Mem := TMemoryStream.Create;
try
Image.Bitmap.SaveToStream(Mem);
Mem.Position := 0;
WICImage.LoadFromStream(Mem);
finally
Mem.Free;
end;
WICImage.EncoderContainerFormat := 該当するフォーマットのGUID;
//GUID_ContainerFormatWmpなど
if not WICImage.Empty then begin
Mem := TMemoryStream.Create;
try
try
WICImage.SaveToStream(Mem);
if Mem.Size > 0 then begin
Mem.SaveToFile(ファイル名);
Result := True;
end;
except
end;
finally
Mem.Free;
end;
end;
finally
WICImage.Free;
end;
end;
|