delphi - 如何判断图形或图片是否损坏?

标签 delphi image

我已经加密->解密图像并将其绘制到 Canvas 上。

将其分配给 jpg(TJpegImage) 时没有出现错误

DecryptJepegImage(PWordInfo(FWordList[i])^.Image, jpg); // No errors here

但是当我将其绘制到 Canvas 上时出现错误。

bmp.Canvas.StretchDraw(Rect(0, 0, bmp.Width, bmp.Height), jpg); // says Access violation!

我的问题是如何确定它是否有损坏,以便我可以使用其中的替代图像或图片。

最佳答案

这还不足以继续下去。我可以非常确定的一件事是,这几乎肯定不是由加密图像损坏引起的。 访问冲突意味着某处的内存访问无效。要么您取消引用nil的指针,要么您的内存已损坏。

根据我的直觉 react ,我要检查的第一件事是,无论您在第一行中对指针进行转换是否正确。指针错误是访问违规的常见原因。

此外,这是零指针错误还是损坏的指针错误?您可以通过访问冲突中的地址来判断。如果其中任何一个以一堆 0 开头(或者在极少数情况下,是一堆 F),那么这意味着您在某处取消引用 nil 。确保已分配 bmpbmp.canvas。但如果这两个地址看起来都像有效的内存地址,那么就会出现内存损坏。这更难追踪,并且您必须花一些时间使用调试器。

关于delphi - 如何判断图形或图片是否损坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6287610/

相关文章:

image - 我在哪里可以下载 Raw Bayer 图像?

delphi - Delphi 6 可以将 UTF-8 葡萄牙语转换为 WideString 吗?

delphi - Delphi 编辑器中的全局书签

delphi - 如何在 Rave Reports、Delphi 7 中强制分页?

java - 为什么我的图片不显示? ( java )

Javascript 悬停图像替换

delphi - 如何将数组的单个元素传递给过程?

performance - Delphi优化: constant loop

javascript - ExtJs,防止图像在 Ext.Img 中拉伸(stretch)

html - 图像不会在样式或 img 本身中调整大小