我有一个存储在变量中的 PNG 图像。该文件没有损坏,但很大(26,7mb / 2908x3444 像素)。我想加载图像并且已经在许多其他图像上使用了 imagecreatefromstring。但在这张图片上,它会因为“zTXt:块数据太大”而失败。我认为这可能是由 imagecreatefromstring 引起的,所以我安装了 Imageick 并尝试了 readImageBlob,但我得到了同样的错误。
如何加载具有 bis 文件大小的图像?
测试脚本:
<?php
$picture = file_get_contents('https://live.staticflickr.com/65535/49177974597_69c2581172_o_d.png');
$image=imagecreatefromstring($picture);
header('Content-type:image/png');
header("Content-Disposition: inline; filename=picture.png");
echo imagepng($image);
?>
编辑:Álvaro González 的回答是正确的,图像已损坏。我从没想过图像已损坏,因为它显示在大多数图像查看器(包括 Windows 图片查看器)中。Gimp 是分析哪些图片损坏和哪些没有损坏的正确工具。
在我的具体情况下,这个在我的 PHP 脚本中下载的 .png 图像是由我以前的脚本生成的。
此脚本已下载原始图像(这是一个 .tiff 文件),删除 alpha 并将其转换为 png。
我的错误是,我使用 Imagick 完成了以下操作: 1. 下载文件 2. 删除 alpha 3. 展平 4. 删除 alpha 5. 转换为 png 6. 保存
现在我执行以下操作: 1. 下载文件 2. 转换为 png 3. 删除 alpha 4. 保存
该图像现在在所有图像查看器(包括 Gimp 和 Windows 图片查看器)中可见,并且当我想在 PHP 中输出它时正确显示。