使用FPDF(PHP)插入带alpha通道的PNG

时间:2010-06-17 03:06:28

标签: php png fpdf

在FPDF的官方文档中,它说PNG不支持alpha通道。

有解决方法吗?

3 个答案:

答案 0 :(得分:5)

如果您需要将透明图像放在另一个上面:使用PHP内置函数将一个图像复制到另一个图像上。然后你将得到一张包含两张图片的新图片。保存为非alpha png,然后插入。

有一个组合图像所需代码的here示例。

如果您希望文字在您的图片下可见:首先插入图片,然后将文字写入文档。

答案 1 :(得分:5)

尝试FPDF的此扩展程序:

http://valentin.dasdeck.com/php/fpdf/fpdf_alpha/

页面简短说明:

  

此脚本允许使用图像(PNG   或带有alpha通道的JPG)。该   可以提供alpha通道   作为单独的8位PNG(“掩码”),或者,   对于PNG,也是内部的   可以使用alpha通道。为了   后者,GD 2.x扩展名是   必需的。

     

指定单独的蒙版图像   几个优点:    - 无需GD。    - 更好的质量(完整的8位alpha通道,而GD仅在内部   支持7位alpha通道)    - 更快(必须完成嵌入式alpha通道的提取   逐像素)

     

function Image(字符串文件,float x,   float y [,float w [,float h [,   string type [,mixed link [,boolean   isMask [,int maskImg]]]]]])

     

与原始参数相同   Image() - 方法,另外2个   (可选)参数:isMask:if   指定和true,使用图像   作为其他图像的掩码。在这   case,参数x,y,w和h   将被忽略和掩码图像   本身在页面上不可见。   maskImg:图像资源的数量(如   以前称为Image()返回   将isMask参数设置为true)   这将用作掩码   图像。

     

function ImagePngWithAlpha(string   file,float x,float y [,float w [,   float h [,mixed link]]])

     

与原始参数相同   Image() - 方法,但没有类型   参数。

答案 2 :(得分:1)

这对我有用,谢谢大家。我基本上包括上面的扩展(http://valentin.dasdeck.com/php/fpdf/fpdf_alpha/),然后扩展类如下:

在fpdf_tpl.php中     要求( 'PDF_ImageAlpha.php');

class FPDF_TPL extends PDF_ImageAlpha

在PDF_ImageAlpha.php中:

class PDF_ImageAlpha extends FPDF{
Inside of here I chaged the image() function to F_image() to avoid clashing (probably       should have used namespaces). With a quick search and replace you will see that this needs replacing 2 more times.
}

然后在我的workhorse.php文件中,我调用函数F_image()而不是image(),这解决了我的问题。

感谢!!!

相关问题