【发布时间】:2017-06-27 16:21:40
【问题描述】:
我在尝试在 Delphi 中加载 Jpg 图像时遇到问题。
我的调用代码是:
AImage.Picture.LoadFromFile( AImageFilePathStr );
我已经关注了 Vcl.Graphics TFileFormatsList.FindExt 方法。
在那里我添加了一个手表(某些变量,如“I”由于优化而无法访问),但当 I=8 时 FindExt 匹配。第 4 项匹配,“I”从 11 倒数到 0。
TFileFormatType(Items[8]) 上的监视扩展为 GraphicClass is TBitmap and Extension is 'jpg'。所以扩展名匹配,但GraphicClass是TBitmap。
稍后抛出异常“位图图像无效”。
为什么 Delphi 似乎认为这个 Jpg 图像是位图?
谢谢。
【问题讨论】:
-
.jpg映射到TBitmap的唯一方法是,如果 VCL 之外的用户代码错误地使用TPicture.RegisterFileFormat()注册了它。将标准Vcl.Imaging.Jpeg单元添加到您的uses子句中以正确注册 JPG。 -
这个问题不能按原样回答。您需要minimal reproducible example 来解释其他无法解释的行为。好吧,我想很容易假设格式已被某些东西错误注册,但无法回答的部分是那个东西。
-
我很抱歉。我以后会这样做的。