PHP / FPDF + imagepng

时间:2018-03-21 00:26:03

标签: php image fpdf

我现在花了几天时间试图解决问题,但我完全失败了......

我有一个简单的PNG文件,只有2个索引颜色,需要动态更改第一个索引颜色...到目前为止没问题...(例如我将颜色硬编码为某些绿色)并交付结果......在浏览器中调用此php文件非常有效:

<?php
$imgname = '../images/pdf/sidebar01.png';
$im = imagecreatefrompng($imgname);
imagecolorset($im,0, 0,150,0);
header("Content-type: image/png");
imagepng($im);
imagedestroy($im);
?>

但是,现在我需要在使用FPDF创建pdf文件时使用此图像:

$pdf->Image('http://server/phps/getColoredLogopart.php',50,1,15,'PNG');

这一行给了我毛骨悚然......我只收到来自FPDF的错误信息,如

  

致命错误:未捕获异常:FPDF错误:不支持的图像类型

我尝试了很多不同的标题,输出,文件类型......没有任何效果。

有没有人,谁设法解决了这个问题? ......我真的没有进一步了解如何使这个工作

2 个答案:

答案 0 :(得分:0)

好的,新想法:读这篇文章时:

http://www.fpdf.org/en/doc/image.htm

它说:图像(字符串文件,......

网址是链接,而不是文件。这就是为什么有一个可选的链接参数和结束的原因。

这样的事情可以起作用:

$pdf->Image('/var/www/hosts/mydomain/httpdocs/img/getColoredLogopart.php',50,1,15,'PNG');

我也不确定是否支持1位PNG,请尝试使用8位版本。

答案 1 :(得分:0)

嗯......嗯......关于图像..实际上它是一个8位PNG ...唯一的事情是,用256种可能的颜色,只设置前2种颜色......但我试过png文件本身的许多不同变体,无论如何都没有成功。

$pdf->Image('http://server.com/images/pdf/sidebar01.png',50,1,15,'PNG'); // this works and will be displayed
$pdf->Image('http://server.com/phps/getColoredLogopart.php',50,1,15,'PNG'); // this line fails and I get the error message 

第二,根据FPDF api,你可以提供$ pdf-&gt; image(),或者通过一个图像文件的路径或者通过URL ...我也在其他PDF上使用它,这是有效的。 ..代码的唯一区别是,我从BLOB DB字段加载图像数据并通过以下方式发送:

header("Content-type: image/jpeg");
print $imagedata;



$pdf->Image('http://server.com/phps/getImage.php?id='.$selectedAcId.'&type=acflr',150,100,50,0,'PNG');

并且在fpdf中没有任何问题,图像将显示没有任何错误。

但是我需要在显示之前更改图像中的颜色...所以我写了这个小的php文件来加载图像,更改颜色并将图像数据发送到请求的网站...

<?php
$imgname = '../images/pdf/sidebar01.png';
$im = imagecreatefrompng($imgname);
imagecolorset($im,0, 0,150,0);
header("Content-type: image/png");
imagepng($im);
imagedestroy($im);
?>

在这里png文件发生了一些事情,FPDF不喜欢并开始唠叨......“致命错误:未捕获异常:FPDF错误:不支持的图像类型

所以也许它的php文件中的脚本提供了PNG图像数据的问题...正如我在开始时说的那样,直接在FPDF中访问png,但是来自php文件的png图像数据似乎是某种东西在某些方面有所不同。 (我真的不确定和php中的图像处理新手......所以也许这是改变一些东西的重点???)

所以,我希望有人还有一些建议...... 非常感谢