回答
您可以使用这样的事情(插入类在这里用来访问受保护的方法):
type
TJPEGImage = class(jpeg.TJPEGImage);
implementation
procedure TForm1.Button1Click(Sender: TObject);
var
JPEGImage: TJPEGImage;
begin
JPEGImage := TJPEGImage.Create;
try
// this should recreate the internal bitmap
JPEGImage.NewBitmap;
// this should recreate the internal image stream
JPEGImage.NewImage;
// here the memory used by the image should be released
finally
JPEGImage.Free;
end;
end;
如果你不想使用FreeAndNil和保持图像空...
Procedure EmptyJPG(jpg:TJpegImage);
var
j:TJpegImage;
begin
j := TJpegImage.Create;
try
jpg.Assign(j);
finally
j.Free;
end;
end;
@Altar:我认为你的意思是'在我的问题/原始问题'中,而不是'在OP中'。 OP(=原始海报)就是你。 –
这不是一个解决方案。它不会比释放和重新创建原始JPEGImage更高效(实际上并不如此,因为您现在无需任何理由创建一个新对象,除非将其丢弃)。虽然原来的问题没有意义,但您提出的解决方案更不合理。 (不是downvoting,BTW;只是看不到这一点。) –
@KenWhite,完全同意,我会看到的唯一原因可能类似于: 开始 EmptyJPG(FMyMyReadOnlyPropertyJPEG); Showmessage('set before:'+ IntToStr(FMyMyReadOnlyPropertyJPEG.CompressionQuality)) end; – bummi
- 1. 如何清除图像上的图形
- 2. 如何缩小JPEG图像以使文本尽可能清晰?
- 3. 如何清除此图像推子?
- 4. 如何清除Facebook的图像缓存
- 5. 如何清除拖影(幻影)图像?
- 6. Winforms清除位图图像?
- 7. gae上的servlet删除jpeg图像
- 8. 如何用光标清除图像以显示其他图像?
- 9. 如何从Java中的JPEG图像中删除元数据?
- 10. 如何保存图像jpeg文件?
- 11. 如何将YUYV图像压缩成JPEG
- 12. 如何使用gzip_types图像/ jpeg
- 13. 如何正确显示base64 jpeg图像?
- 14. 如何压缩jpeg图像与可可?
- 15. 如何将AVFrame写入JPEG图像
- 16. 如何将.Jpeg图像转换为.Bmp
- 17. 在Imageview中清除图像
- 18. 清除QML图像缓存
- 19. 清除图像缓存
- 20. 清除xsl图像缓存
- 21. 强制IE清除图像
- 22. 清空canvas图像或清除android
- 23. 如何将jpeg图像保存为Progressive JPEG?
- 24. FFmpeg:avcodec_encode_video()和JPEG图像
- 25. 入门JPEG图像
- 26. Combobox与JPEG图像
- 27. JPEG图像压缩
- 28. JPEG图像像素质量
- 29. 转换J2C(Jpeg 2000)图像为JPEG
- 30. 如何清除图表tkinter
如果你不想释放对象的背景T形部件,但你不想让它占用内存,那么你想保留什么? –
@Rob。它将在稍后重用。多次。无论如何,原因并不重要。我只是很好奇,如果图像可以被清除而不消耗额外的资源(像bummi所建议的那样创建新对象)。 – Ampere
如果您想删除所有内容,我也无法看到您保留的内容。图像已经剩下了什么?那里有什么状态? –