我目前遇到了 fpdf 的一个非常奇怪的问题。我发现了一个没有答案的类似问题:not a PNG file in FPDF。我通过浏览器将图像上传到我的文件服务器,然后提取到 fpdf 报告中。当此图像是 png 时,我收到错误:“FPDF 错误:不是 PNG 文件”。当上传的图像是 jpg 时,我没有收到任何错误。这个问题似乎是几周前一夜之间出现的。
更奇怪的是,只有上传新的 png 时才会发生这种情况。报告中有一个 png 生成得很好。当我从系统下载该png并重新上传时,错误再次出现。
以下是我在尝试解决该问题时采取的一些步骤:
我保存图像的方式没有任何改变,但代码如下:
$original = $time."_".$name."_o.".$extension;
$thumbnail = $time."_".$name."_t.".$extension;
include('SimpleImage.php');
$image = new SimpleImage();
$image->load($_FILES['file']['tmp_name']);
$image->save($A_path."images/".$original);
$image->resizeToHeight(200);
$image->save($A_path."images/thumbs/".$thumbnail);
$photo = "images/".$original;
$thumb = "images/thumbs/".$thumbnail;
Run Code Online (Sandbox Code Playgroud)解决方法-我已经在保存时将 png 转换为 jpg,而不是重新编码图像。谢谢您的帮助。
检查图像的深度。FPDF支持24位深度(我不确定32位深度),也不支持alpha通道。我尝试使用 ImageMagick (或 Windows 下的 Paint.net)重新编码为 png。
convert input.png -depth 8 +matte output.png
Run Code Online (Sandbox Code Playgroud)