加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

使用php为图像添加水印

发布时间:2020-12-13 16:15:10 所属栏目:PHP教程 来源:网络整理
导读:我的网站(以html和php编码完整)包含一项允许某些用户上传图片的功能.使用以下代码调整图片的大小和水印: function watermarkpic($filename) {ini_set('max_input_time',300);require 'config.php'; $watermark = imagecreatefrompng('watermarknew.png');$w
我的网站(以html和php编码完整)包含一项允许某些用户上传图片的功能.使用以下代码调整图片的大小和水印:

function watermarkpic($filename) {

ini_set('max_input_time',300);

require 'config.php';  

$watermark = imagecreatefrompng('watermarknew.png');
$watermarkwidth = imagesx($watermark);
$watermarkheight = imagesy($watermark);

if(preg_match('/[.](jpg)$/',$filename)) {  
        $originalimage = imagecreatefromjpeg($path_to_image_directory . $filename);  
    } else if (preg_match('/[.](gif)$/',$filename)) {  
        $originalimage = imagecreatefromgif($path_to_image_directory . $filename);  
    } else if (preg_match('/[.](png)$/',$filename)) {  
        $originalimage = imagecreatefrompng($path_to_image_directory . $filename);  
    }  

$originalwidth = imagesx($originalimage);
$originalheight = imagesy($originalimage);

$maxsize = 800;
$imgratio = $originalwidth / $originalheight;

if($imgratio > 1) {
    $finalwidth = $maxsize;
    $finalheight = $maxsize / $imgratio;
}
else {
    $finalheight = $maxsize;
    $finalwidth = $maxsize * $imgratio;
}   

$finalimage = imagecreatetruecolor($finalwidth,$finalheight);

imagecopyresampled($finalimage,$originalimage,$finalwidth,$finalheight,$originalwidth,$originalheight);

imagecopymerge($finalimage,$watermark,$watermarkwidth,$watermarkheight,100);

//now move the file where it needs to go
if(!file_exists($path_to_medimage_directory)) {  
        if(!mkdir($path_to_medimage_directory)) {  
                die("There was a problem. Please try again!");  
        }  
     } 

 imagejpeg($finalimage,$path_to_medimage_directory . $filename);   
}

问题是水印具有透明背景,但它在图像上显示为黑色背景.我见过关于alpha混合等的东西,但我真的不知道这是什么.我想了解我在做什么,以及解决问题,以便水印是透明的.真实的画面应该填补空间.

提前致谢.

解决方法

斯科特,这里可以发生很多事情.

>您需要确保使用未编入索引的Alpha透明度保存PNG.索引透明度基本上表示“此颜色(可能是黑色)将在整个图像中显示为透明.”当浏览器或图像编辑器读取它时,它可能是透明的,但特别是如果你将它与J??PG合并,透明度将不会受到尊重.如果您想了解更多信息,请尝试http://www.idux.com/2011/02/27/what-are-index-and-alpha-transparency/
>确保为两个图像获得正确的尺寸.请参阅Transparent PNG over JPG in PHP以确保您没有遇到同样的问题.
>如果您仍遇到问题,可以查看此处:http://php.net/manual/en/image.examples.merged-watermark.php,因为它显示了如何更改图像的不透明度.它可能接近你想要完成的任务,或者可能会慢慢想到另一个想法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读