gpt4 book ai didi

delphi - 如何加载JPE图像文件?

转载 作者:行者123 更新时间:2023-12-02 07:49:24 26 4
gpt4 key购买 nike

这段代码:

uses
Vcl.Imaging.jpeg...
...
ThisPicture := TPicture.Create;
try
ThisPicture.LoadFromFile('MyImage.JPE'); // error
...
finally
ThisPicture.Free;
end;

生成此错误:

EInvalidGraphic: Unknown picture file extension <.jpe>

尽管使用了Vcl.Imaging.jpeg。 JPG和JPEG可以毫无问题地加载。

Wikipedia解释说 .jpg、.jpeg、.jpe、.jif、.jfif、.jfi 是 JPEG 格式的扩展名。

那么如何使用LoadFromFile('MyImage.JPE')而不出现错误呢?

最佳答案

Delphi JPEG 代码未注册 JPE 扩展。因此出现了错误。由于您知道图像类型,因此可以将其直接加载到 TJPEGImage 对象中:

Image := TJPEGImage.Create;
Image.LoadFromFile(...);

并分配给图片控件。

 ThisPicture.Assign(Image);

或更简单的解决方案是注册 JPE 扩展,以便 TPicture 将其与 TJPEGImage 关联。这可以使用 TPicture.RegisterFileFormat 来完成:

uses
Vcl.Imaging.JConsts, Vcl.Imaging.jpeg;
....
TPicture.RegisterFileFormat('jpe', sJPEGImageFile, TJPEGImage);
TPicture.RegisterFileFormat('jif', sJPEGImageFile, TJPEGImage);
TPicture.RegisterFileFormat('jfif', sJPEGImageFile, TJPEGImage);
TPicture.RegisterFileFormat('jfi', sJPEGImageFile, TJPEGImage);

就其值(value)而言,RegisterFileFormat 的文档包含以下相当古怪的行:

The AExtension parameter specifies the three-character system file extension to associate with the graphic class (for example, "bmp" is associated with TBitmap).

不必担心扩展名长度必须恰好为三个字符的建议。这只是一个文档错误。

关于delphi - 如何加载JPE图像文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22745521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com