【问题标题】:imagepng() and transparency in GD library with PHP使用 PHP 的 GD 库中的 imagepng() 和透明度
【发布时间】:2010-12-14 21:00:08
【问题描述】:

在 PHP 中使用 imagepng() 函数时,如何确保我保存的图像以透明背景保存?

【问题讨论】:

    标签: php gd


    【解决方案1】:

    只需这样做:

    imagealphablending($img, false);
    imagesavealpha($img, true);
    

    输出前。确保所有源文件(如果您使用任何源文件)都设置为具有透明度的 32 位 PNG - 如果不是,输出可能与黑色背景不同或透明度不符合要求。

    【讨论】:

    【解决方案2】:

    有一个名为imagecolortransparent 的函数可让您设置透明的颜色。我不知道这是否回答了你的问题。

    【讨论】:

      【解决方案3】:

      这是imagecolortransparent 函数的示例(如果有帮助):

      <?php
      // Create a 55x30 image
      $im = imagecreatetruecolor(55, 30);
      $red = imagecolorallocate($im, 255, 0, 0);
      $black = imagecolorallocate($im, 0, 0, 0);
      
      // Make the background transparent
      imagecolortransparent($im, $black);
      
      // Draw a red rectangle
      imagefilledrectangle($im, 4, 4, 50, 25, $red);
      
      // Save the image
      imagepng($im, './imagecolortransparent.png');
      imagedestroy($im);
      ?>
      

      【讨论】:

      • 埃里克在这里打败了我。后来在同一页上,有人说,“当你使用调色板图像(使用 imagecreate() 创建)时,分配的第一个颜色是背景颜色。这种颜色不能用于透明度。所以如果你想让背景透明,首先分配一个虚拟背景颜色,然后分配真正的背景颜色并声明它是透明的。”
      【解决方案4】:

      这是一个例子

           $newimage = imagecreatetruecolor($dst_w, $dst_h);
           imagealphablending($newimage, false);
           imagesavealpha($newimage, true);
           $transparentindex = imagecolorallocatealpha($newimage, 255, 255, 255, 127);
           imagefill($newimage, 0, 0, $transparentindex);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-06
        • 2012-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-21
        • 2011-01-09
        相关资源
        最近更新 更多