【问题标题】:PHP / FPDF + imagepngPHP / FPDF + imagepng
【发布时间】:2018-03-21 00:26:02
【问题描述】:

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

我确实有一个简单的 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 错误:不支持的图像类型

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

有没有人设法解决了这个问题? ...我真的不知道如何让这个工作得到进一步的线索

【问题讨论】:

  • 我已经更改了答案,也许会有所帮助?

标签: php image fpdf


【解决方案1】:

好的,新想法:阅读本文时:

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

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

URL 是一个链接,而不是一个文件。这就是为什么有一个可选的链接参数和结尾。

所以这样的事情可以工作:

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

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

【讨论】:

    【解决方案2】:

    hm .. 好吧 .. 关于图像 .. 实际上它是一个 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->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 错误:不支持的图像类型”

    所以也许它在传递PNG图像数据的php文件中的脚本存在问题......正如我在开始时所说,直接在FPDF中访问png是可行的,但是来自php文件的png图像数据似乎是什么在某些时候不同。 (而且我真的不确定并且对 php 中的图像处理很陌生......所以也许这就是改变某些东西的重点???)

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

    【讨论】:

      猜你喜欢
      • 2016-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多