【问题标题】:How to merge transparent PNG with image using PHP?如何使用 PHP 将透明 PNG 与图像合并?
【发布时间】:2010-11-26 12:21:59
【问题描述】:

情况是这样的:我有一张 50x50 的小图片。我还有一张 50x50 的小透明图片,其中包含 50x50 图片的框架,所以我基本上想将透明 png 放在图像的顶部,然后合并这两个图片,这将导致最后的第三张图片看起来像这样:http://img245.imageshack.us/i/50x50n.png

注意:我不想只使用 HTML 来做到这一点(我通过编写一个将透明 png 放在原始图像顶部的 javascript 插件来实现这一点)。

谢谢。

【问题讨论】:

    标签: php image merge resize png


    【解决方案1】:

    您可以使用ImageMagick :: Composite 来完成。第一个用户提供的注释应该足以掌握这个概念。

    【讨论】:

      【解决方案2】:

      您可以使用 PHP GD2 库将两个图像合并在一起。

      例子:

      <?php
       # If you don't know the type of image you are using as your originals.
       $image = imagecreatefromstring(file_get_contents($your_original_image));
       $frame = imagecreatefromstring(file_get_contents($your_frame_image));
      
       # If you know your originals are of type PNG.
       $image = imagecreatefrompng($your_original_image);
       $frame = imagecreatefrompng($your_frame_image);
      
       imagecopymerge($image, $frame, 0, 0, 0, 0, 50, 50, 100);
      
       # Save the image to a file
       imagepng($image, '/path/to/save/image.png');
      
       # Output straight to the browser.
       imagepng($image);
      ?>
      

      【讨论】:

      • 我试过这个,但我的透明框架在中间变白了。应该是什么问题。
      • 您可能需要在最后一行之前添加 header('Content-Type: image/png'); 以确保将正确的 MIME 类型发送到浏览器
      • 这对我也不起作用,它似乎没有保存 alpha 通道。我还尝试添加下面用户提到的 alpha 混合标志。
      【解决方案3】:

      如果您想在图像上保持 PNG 帧透明度,请在 imagecopymerge() 之前添加 imagealphablending($frame,true);

      【讨论】:

      • 图像仍然通过白色透明区域。
      • 我得到了同样的结果。有解决方案吗?
      猜你喜欢
      • 2012-03-06
      • 2023-03-17
      • 2011-06-02
      • 1970-01-01
      • 2016-07-17
      • 2017-02-16
      • 2011-04-25
      相关资源
      最近更新 更多