在FPDF的官方文档中,它说PNG不支持alpha通道。
有解决方法吗?
答案 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(),这解决了我的问题。
感谢!!!