PHP GD将背景转换为透明或alpha

时间:2014-09-16 14:57:08

标签: php gd

enter image description here

我有一个jpeg图片,我想用php GD创建2个盒子。

  1. 左框将删除背景并设置透明

  2. 右框将设置rgba - alpha 80%;

  3. 并将其保存在png transparance中

    我试过了imagesetpixel,但它不透明,

    我也尝试使用imagecolortransparent

    $transparentcolour = imagecolorallocate($im, 40,220,1);
    imagecolortransparent($image, $transparentcolour);
    

    但这会使这一切变成透明的一切。

    谁知道如何实现这个目标?

1 个答案:

答案 0 :(得分:1)

直透明很容易:

  1. 禁用Alpha混合

  2. 使用alpha分配颜色 - 我个人使用(255,0,255,127),因为洋红色是"标准"使用游戏精灵时的透明色,所以我只是坚持使用它

  3. 绘制矩形

  4. 结果将是一块透明度。

    功能参考:imagealphablendingimagecolorallocatealphaimagefilledrectangle


    &#34>褪色80%"事情会变得更棘手。

    1. 禁用Alpha混合

    2. 对于矩形中的每个(x,y) ...(即两个嵌套的for循环)

      1. 获取该像素的颜色(imagecoloratimagecolorsforindex应该有帮助)

      2. $color['alpha']乘以0.2获得80%的淡出效果

      3. 使用与源相同的RGB分配新颜色,但使用新的A

      4. 绘制像素

    3. 结果将是一块80%的淡入淡出像素。

      功能参考:imagealphablendingimagecoloratimagecolorsforindeximagecolorallocatealphaimagesetpixel