代码之家  ›  专栏  ›  技术社区  ›  Raptor

使用fpdf(php)使用alpha通道插入png

  •  4
  • Raptor  · 技术社区  · 15 年前

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

    有什么解决办法吗?

    3 回复  |  直到 7 年前
        1
  •  4
  •   Community CDub    8 年前

    如果需要将透明图像置于另一个图像之上:使用phps内置函数将一个图像复制到另一个图像上。然后你将得到一张新的图片,其中包含两张图片。另存为非alpha png,然后插入。

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

    如果希望文本在图片下可见:请先插入图片,然后将文本写入文档。

        2
  •  5
  •   Cemen    7 年前

    尝试扩展fpdf:

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

    页面中的简短说明:

    此脚本允许使用图像(PNG 或jpgs)与alpha通道。这个 alpha通道可以提供 作为单独的8位PNG(“mask”),或, 对于PNG,也是内部 可以使用alpha通道。对于 后者,gd 2.x扩展名是 必修的。

    指定单独的遮罩图像具有 几个优点: -不需要GD。 -更好的质量(全8位alpha通道,而gd仅在内部 支持7位alpha通道) -更快(必须提取嵌入的alpha通道 像素的)

    函数图像(字符串文件,float x, 浮动Y[,浮动W[,浮动H[, 字符串类型[,混合链接[,布尔值 ismask[,int maskimg]]]]])

    与原始参数相同 image()-方法,附加2个 (可选)参数:ismask:if 指定且为真,使用图像 作为其他图像的遮罩。在这 case,参数x、y、w和h 将被忽略和遮罩图像 它本身在页面上不可见。 maskimg:图像资源数量(as 由以前调用的图像()返回 当ismask参数设置为true时) 那将用作这个的面具 图像。

    函数imagepngwithalpha(字符串 文件,float x,float y[,float w[, 浮点H[,混合链接]])

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

        3
  •  1
  •   Lingasamy Sakthivel Subodh    7 年前

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

    在FPDFA TPL.PHP中 require('pdf imagealpha.php');

    class FPDF_TPL extends PDF_ImageAlpha
    

    在pdf中:

    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(),这解决了我的问题。

    谢谢!!!!