【问题标题】:PHP created watermark looks strangePHP创建的水印看起来很奇怪
【发布时间】:2012-04-19 06:22:10
【问题描述】:

我有向图像(JPG)添加水印(PNG,透明)的脚本。可以很好地处理 - 以某种方式水印会改变颜色并使其不透明。 这是我用来添加水印的代码:

$im = imagecreatefromjpeg('../../pics/'.$ran.'_large.jpg');
$stamp = imagecreatefrompng('a.png');

$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

imagecopymerge($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp), 70);

// Save the image to file and free memory
imagejpeg($im, '../../pics/'.$ran.'_large.jpg');
imagedestroy($im);

Image with watermark after PHP generates it (wrong way)

【问题讨论】:

    标签: php watermark


    【解决方案1】:

    您的输出图像格式是 jpeg。 Jpeg 不支持透明度。将输出格式更改为 png。

    也建议你使用图像魔法。 Gd非常原始。

    【讨论】:

      【解决方案2】:

      在从 PNG 创建带有 alpha 映射的 PNG 图像时,不要忘记这些功能:

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

      看看有没有区别?

      【讨论】:

        【解决方案3】:

        感谢大家的帮助 - I found answer in this site

        $im = imagecreatefromjpeg('../../pics/'.$ran.'_large.jpg');
        $stamp = imagecreatefrompng('a.png');
        
        imagealphablending($im, true);
        
        $marge_right = 10;
        $marge_bottom = 10;
        
        $sx = imagesx($stamp);
        $sy = imagesy($stamp);
        
        $offset = 10;
        
        imagecopy($im, $stamp, imagesx($im) - imagesx($stamp) - $offset, imagesy($im) - imagesy($stamp) - $offset, 0, 0, imagesx($stamp), imagesy($stamp));
        // Save the image to file and free memory
        imagejpeg($im, '../../pics/'.$ran.'_large.jpg');
        imagedestroy($im);
        

        【讨论】:

          猜你喜欢
          • 2021-09-24
          • 1970-01-01
          • 2021-07-02
          • 1970-01-01
          • 2021-03-25
          • 2015-03-20
          • 2011-07-19
          • 2021-12-03
          • 1970-01-01
          相关资源
          最近更新 更多