zoukankan      html  css  js  c++  java
  • 给图片添加水印

    <?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 openimage($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=openimage($bg_mime,$bg_src);
        $logo=openimage($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);   
    
    ?>

    若要将添加水印后的图片保存下来而非仅显示在浏览器中,则须在“4.输出图像”的步骤中使用imagepng()一类函数的另一形式:imagepng($bg,'生成图片的路径名称.后缀');

        //3.通知浏览器以图像形式展现,若仅需保存无需在浏览器显示则注释这句
        header("content-type:image/png");
        
        //4.输出图像
        imagepng($bg);  //若仅需保存无需在浏览器显示则注释这句
    
        //若要保存图像:
        //获取底板图片的文件扩展名
        $ext=pathinfo($bg_src)['extension'];
        //生成一个随机且唯一性的文件名
        $filename=md5(uniqid(microtime(true),true)).".".$ext;
        //设置要输出的文件路径
        $filepath="./".$filename;
        switch ($ext) {
            case 'jpg':
            case 'jpeg':
            case 'jpe':
                imagejpeg($bg,$filepath);
                break;
            case 'png':
                imagepng($bg,$filepath);
                break;
            case 'gif':
                imagegif($bg,$filepath);
                break;
            case 'bmp':
            case 'wbmp':
                imagewbmp($bg,$filepath);
                break;
            case 'xbm':
                imagexbm($bg,$filepath);
                break;
        }
  • 相关阅读:
    江の島西浦写真館2-1
    江の島西浦写真館1-2
    Oracle 查询表空间使用情况
    Oracle 的开窗函数 rank,dense_rank,row_number
    oracle11G 用户密码180天修改概要文件过程
    CentOS6 安装 MySQL5.7
    linux下SS 网络命令详解
    CentOS6 网络设置
    redhat 6 红帽6 Linux 网络配置
    Oracle分析函数——函数列表
  • 原文地址:https://www.cnblogs.com/zhouwanqiu/p/9303664.html
Copyright © 2011-2022 走看看