【问题标题】:This code fails: aBitmap.Assign(aGraphic.Graphic). How to fix it?此代码失败:Bitmap.Assign(a Graphic.Graphics)。如何解决?
【发布时间】:2010-09-23 11:38:47
【问题描述】:

我有这段代码可以处理世界上所有的图像(我已经尝试了数千个 - 真的),除了一个 JPG。 当我尝试加载该图像(它在 IrfanView 中打开没有问题)时,我遇到了访问冲突。

aBitmap.Assign(aGraphic.Graphic)

有什么想法吗?


使用:Delphi 7,Win 7 32bit

【问题讨论】:

  • 嗨 Bharat - 我有代码来处理那个错误(发生在 'loadfromfile' 上)。但这不是我的情况。我现在不是在谈论错误 53,而是在谈论 AV。我的错误也发生在分配上。
  • 如果您上传一个有问题的示例图像并且可能是实际代码的更大片段,这可能会有所帮助。
  • JPEG 并不总是 JPEG。
  • 你能贴出那个图片的链接吗?

标签: delphi


【解决方案1】:

不是我的代码有问题。

我刚刚在 PaintShop Pro 7 中打开了图像并将其保存回来(也保存为 JPG)。不,它有效。 Borland 的代码可能有问题。也许它不能很好地处理不符合 JPG 标准的图像?无论如何,问题是它不会在 LoadFromFile 上崩溃。我已经用 TRY EXCEPT 保护了那段代码。它在分配时崩溃。

更新: 看起来是 CMYK 错误:http://cc.embarcadero.com/item/19723

【讨论】:

  • Borland 的代码是来自独立 JPEG 组的官方 C 代码。也许您遇到了一个随机问题,该问题自 Delphi 7 发布以来就已修复。您可以使用其他代码来加载和保存 jpeg,例如我们的开源 SynGdiPlus 单元,它可以用作标准 jpeg 的替代品unit:它允许您使用 GDI+ 读取和保存 jpeg 图片,自 Windows XP 起提供。见blog.synopse.info/tag/GDIPlus
猜你喜欢
  • 2015-01-19
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 2020-11-03
  • 2020-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多