gpt4 book ai didi

delphi - 将 PNG 加载到 TImage

转载 作者:行者123 更新时间:2023-12-03 15:43:30 25 4
gpt4 key购买 nike

我正在尝试使用 PNGImage 库将 PNG 图像加载到 TImage,

每次我这样做

Image1.Picture.LoadFromFile('c:\c.png');

我明白了:

The file being read is not a valid "Portable Network Graphics" image because it contains an invalid header. This file may be corrupted, try obtaining it again

现在我猜这个问题是由这些行引起的(来自 PngImage 库):

{Characters for the header}
const
PngHeader: Array[0..7] of Char = (#137, #80, #78, #71, #13, #10, #26, #10);

{Loads the image from a stream of data}
procedure TPngObject.LoadFromStream(Stream: TStream);
var
Header : Array[0..7] of Char;
HasIDAT : Boolean;

{Chunks reading}
ChunkCount : Cardinal;
ChunkLength: Cardinal;
ChunkName : TChunkName;
begin
{Initialize before start loading chunks}
ChunkCount := 0;
ClearChunks();
{Reads the header}
Stream.Read(Header[0], 8);

{Test if the header matches}
if Header <> PngHeader then
begin
RaiseError(EPNGInvalidFileHeader, EPNGInvalidFileHeaderText);
Exit;
end;

我尝试将 Char 更改为 AnsiChar,但没有成功。

最佳答案

您正在自己编译 PNGImage 单元,并且您有一个为 Unicode 之前的 Delphi 设计的过时的 PNGImage。这就是你面临的根本问题。

PNG 功能现已内置于 Delphi 中。 PNGImage 单元是产品附带的标准库的一部分。只需删除您的 PNGImage 代码版本即可。请确保删除 .pas 和 .dcu 文件,以便您的错误版本无法使用。

然后将 PNGImage 包含在您的一个单元的 use 子句中,我猜您已经这样做了。这将导致使用该单元的内置版本。

关于delphi - 将 PNG 加载到 TImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15321669/

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