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

5
在FPDF的官方文档中,它说PNG不支持alpha通道。
有没有任何解决方法?
3个回答

6
如果您需要将一个透明图片放在另一张图片上面:使用PHP内置函数将其中一张图片复制到另一张图片上。然后您将得到一个新的图片,其中包含这两个图片。保存为非alpha png格式并插入。
这里有一个例子(点击此处)展示了合并图片所需的代码。
如果您希望图片下方的文本可见:先插入图片,然后将文本写入文档中。

5

尝试使用FPDF的这个扩展:

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

页面上的简短描述:

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

指定单独的掩码图像具有以下几个优点: - 不需要GD。 - 更好的质量(完整的8位alpha通道,而GD内部仅支持7位alpha通道) - 更快(必须逐像素执行嵌入式alpha通道的提取)

function Image(string file, float x, float y [, float w [, float h [, string type [, mixed link [, boolean isMask [, int maskImg]]]]]])

与原始Image()方法相同的参数,还有两个附加的(可选)参数:isMask:如果指定并且为true,则该图像用作其他图像的掩码。在这种情况下,x,y,w和h参数将被忽略,并且掩码图像本身不会在页面上显示。maskImg:图像资源的编号(由先前调用Image()并将isMask参数设置为true返回),将用作此图像的掩码。

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

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


1
这对我很有帮助,感谢大家。我基本上使用了上面的扩展(http://valentin.dasdeck.com/php/fpdf/fpdf_alpha/),然后按照以下方式扩展类:
在fpdf_tpl.php中 require('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()函数,这解决了我的问题。

谢谢!!!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接