给图片添加水印

Posted zhouwanqiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给图片添加水印相关的知识,希望对你有一定的参考价值。

<?php
    $bg_src="./bg.jpg";
    $logo_src="./logo.png";

    //获取图片的width宽、height高、mime后缀类型
    $bg_size=getimagesize($bg_src);
    $logo_size=getimagesize($logo_src);
    
    $bg_width=$bg_size[0];
    $bg_height=$bg_size[1];
    $bg_mime=$bg_size[‘mime‘];
    
    $logo_width=$logo_size[0];
    $logo_height=$logo_size[1];
    $logo_mime=$logo_size[‘mime‘];
    
    $position=0;//水印相对背景图的位置;0表示位置在左上角,1表示位置在上边中间,2表示位置在右上角,3表示位置在左侧中间,4表示位置在中心,5表示位置在右侧中间,6表示位置在左下角,7表示位置在下边中间,8表示位置在右下角
    $alpha=100;//水印的透明度0~100
        
    //1.打开两张图片  
    function mime($mime,$src){
        switch ($mime){
            case "image/jpeg":
                $img=imagecreatefromjpeg($src);
                break;
            case "image/png":
                $img=imagecreatefrompng($src);
                break;
            case "image/gif":
                $img=imagecreatefromgif($src);
                break;
            case "image/wbmp":
                $img=imagecreatefromwbmp($src);
                break;
            case "image/xbm":
                $img=imagecreatefromxbm($src);
                break;
        }
        return $img;
    }
    
    $bg=mime($bg_mime,$bg_src);
    $logo=mime($logo_mime,$logo_src);
    
    //2.合并两张图片
    switch ($position){
        case 0:
            $x=0;
            $y=0;
            break;
        case 1:
            $x=$bg_width/2-$logo_width/2;
            $y=0;
            break;
        case 2:
            $x=$bg_width-$logo_width;
            $y=0;
            break;
        case 3:
            $x=0;
            $y=$bg_height/2-$logo_height/2;
            break;
        case 4:
            $x=$bg_width/2-$logo_width/2;
            $y=$bg_height/2-$logo_height/2;
            break;
        case 5:
            $x=$bg_width-$logo_width;
            $y=$bg_height/2-$logo_height/2;
            break;
        case 6:
            $x=0;
            $y=$bg_height-$logo_height;
            break;
        case 7:
            $x=bg_width/2-$logo_width/2;
            $y=$bg_height-$logo_height;
            break;
        case 8:
            $x=$bg_width-$logo_width;
            $y=$bg_height-$logo_height;
            break;
    }
    
    imagecopymerge($bg,$logo,$x,$y,0,0,$logo_width,$logo_height,$alpha);

    //3.通知浏览器
    header("content-type:image/png");
    
    //4.输出图像
    imagepng($bg);
    
    //5.释放资源
    imagedestroy($bg);
    imagedestroy($logo);   

?>

 

以上是关于给图片添加水印的主要内容,如果未能解决你的问题,请参考以下文章

PHP给图片添加文字水印

GO使用image/draw库给图片添加水印完全解析

GO使用image/draw库给图片添加水印完全解析

opencv for java给图片添加水印中文问题

海报工厂之android 如何给图片添加水印和文字

分享几个用 Python 给图片添加水印的方法,简单实用