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

    /**
     * PHP图片添加水印
     * @param  $img_path 图片的路径
     * @param  $position 水印的位置,默认右下角,1居中,2左上,3右下,4左下,5右下
     * @return $flag     是否输出在浏览器,默认保存文件
     */
    function creatWaterMark($img_path,$position='',$flag=false){
        if(empty(@file_get_contents($img_path))){
            return false;
        }
        // $img_path = '20171225161906.png';//300*500
        $logo_path = 'logo.png';//100*30
        //图片大小
        $img_pathWH = getimagesize($img_path);
        $logo_pathWH = getimagesize($logo_path);
        switch ($position){
            case 1:
                   //水印居中
                $sWH = $img_pathWH[0]/2-$logo_pathWH[0]/2;
                $eHW = $img_pathWH[1]/2-$logo_pathWH[1]/2;
                break;
            case 2:
                //水印在左上角
                $sWH = 30;
                $eHW = 20;
                break;
            case 3:
                //水印在右上角
                $sWH = $img_pathWH[0]-$logo_pathWH[0]-30;
                $eHW = 20;
                break;
            case 4:
                //水印在左下角
                $sWH = 30;
                $eHW = $img_pathWH[1]-$logo_pathWH[1]-20;
                break;
            case 5:
                //水印在右下角
                $sWH = $img_pathWH[0]-$logo_pathWH[0]-30;
                $eHW = $img_pathWH[1]-$logo_pathWH[1]-20;
                break;
            default:
                //水印在右下角
                $sWH = $img_pathWH[0]-$logo_pathWH[0]-30;
                $eHW = $img_pathWH[1]-$logo_pathWH[1]-20;
                break;
        }
        //创建图片的实例
        $dst_img = imagecreatefromstring(file_get_contents($img_path));
        // var_dump($img_pathWH,$logo_pathWH);die;
        $src_logo = imagecreatefromstring(file_get_contents($logo_path));
        //获取水印图片的宽高
        list($src_logo_w, $src_logo_h) = getimagesize($logo_path);
        //将水印图片复制到目标图片上,最后个参数50是设置透明度,这里实现半透明效果
        imagecopymerge($dst_img, $src_logo, $sWH, $eHW, 0, 0, $src_logo_w, $src_logo_h, 50);
        //如果水印图片本身带透明色,则使用imagecopy方法
        //imagecopy($dst_img, $src_logo, 10, 10, 0, 0, $src_logo_w, $src_logo_h);
        //输出图片
        list($dst_img_w, $dst_img_h, $dst_img_type) = getimagesize($img_path);
        switch ($dst_img_type) {
            case 1://GIF
                if($flag){
                    header('Content-Type: image/gif');
                    imagegif($dst_img); //这里是直接输出到浏览器
                    return false;
                }
                imagegif($dst_img,$img_path);//这个是保存加好水印的图片
                break;
            case 2://JPG
                if($flag){
                    header('Content-Type: image/jpeg');
                    imagejpeg($dst_img); //这里是直接输出到浏览器
                    return false;
                }
                imagejpeg($dst_img,$img_path);//这个是保存加好水印的图片
                break;
            case 3://PNG
                if($flag){
                    header('Content-Type: image/png');
                    imagepng($dst_img); //这里是直接输出到浏览器
                    return false;
                }
                imagepng($dst_img,$img_path);//这个是保存加好水印的图片
                break;
            default:
                break;
        }
        imagedestroy($dst_img);
        imagedestroy($src_logo);
    }
  • 相关阅读:
    wzplayer2 支持mac 了,最新谍报
    关于duilib的理解
    DMS的实现转载
    视频通话最新谍报
    新人补钙系列教程之:Function类的重要方法apply()
    新人补钙系列教程之:webgame好友模块原型开发一
    新人补钙系列教程之: 大型 webGame 开发系列之 pipes
    新人补钙系列教程之:模拟java多线程Thread类
    flash学习网站
    新人补钙系列教程之:AS3与服务器通信
  • 原文地址:https://www.cnblogs.com/yeshaoxiang/p/8110368.html
Copyright © 2011-2022 走看看