首页 > php图像处理 > php图片增加中文与图片水印代码

php图片增加中文与图片水印代码

$ico_pic 是你要给图片加水印的水印图片,其它的参数都有详细的说明,如果你正在找这类代码可以下载保存成php文件,再利用后面说的调用方法来调用生成水印图片类代码.

php图片增加中文与图片水印代码如下:

<?php
class smallpic {
    private $src_pic; //原图
    private $ico_pic = "003.png"; //水印图
    private $ico_text = "水印"; //水印文字
    private $small_width; //缩略图宽度
    private $small_height; //缩略图高度
    private $is_ico_pic = true; //是否加图片水印
    private $is_text = true; //是否加文字水印
    private $src_x = 20; //水印在原图的x坐标
    private $src_y = 20; //水印在原图的y坐标
    private $ut = "utf-8"; //文字编码
    private $font_color = "#990000"; //文字水印颜色
    private $samll_pic_name = "smallpic"; //小图的名称
    private $big_pic_name = "bigpic"; //大图的名称
    function __construct($src_pic, $small_width, $small_height) {
        $this->checkfile($src_pic);
        $this->checkfile($this->ico_pic);
        $this->src_pic = $src_pic;
        $this->small_width = $small_width;
        $this->small_height = $small_height;
    }
    private function __get($property_name) {
        return $this->$property_name;
    }
    private function __set($property_name, $value) {
        return $this->$property_name = $value;
    }
    /** 
     * 取得图片的一些基本信息,类型为array
     */
    function getimageinfo($image) {
        return @getimagesize($image);
    }
    /** 
     * 把图片加载到php中
     * $image 传进来的图片
     */
    function getimage($image) {
        $image_info = $this->getimageinfo($image);
        switch ($image_info[2]) {
            case 1:
                $img = @imagecreatefromgif($image);
                break;
            case 2:
                $img = @imagecreatefromjpeg($image);
                break;
            case 3:
                $img = @imagecreatefrompng($image);
                break;
        }
        return $img;
    }
    function createimageforsuffix($big_pic, $new_pic) {
        $image_info = $this->getimageinfo($this->src_pic);
        switch ($image_info[2]) {
            case 1:
                //输出大图
                @imagegif($big_pic, $this->big_pic_name . ".gif");
                //输出小图
                @imagegif($new_pic, $this->samll_pic_name . ".gif");
                break;
            case 2:
                //输出大图
                @imagejpeg($big_pic, $this->big_pic_name . ".jpg");
                //输出小图
                @imagejpeg($new_pic, $this->samll_pic_name . ".jpg");
                break;
            case 3:
                //输出大图
                @imagepng($big_pic, $this->big_pic_name . ".png");
                //输出小图
                @imagepng($new_pic, $this->samll_pic_name . ".png");
                break;
        }
    }
    function checkfile($file) {
        if (!file_exists($file)) {
            die("图片:" . $file . "不存在!");
        }
    }
    function createsmallimage() {
        $big_pic = $this->getimage($this->src_pic);
        $big_pic_info = $this->getimageinfo($this->src_pic);
        $new_pic = $this->getimage($this->ico_pic);
        $new_pic_info = $this->getimageinfo($this->ico_pic);
        $rgb = $this->convcolor();
        //判断是按宽比例缩放还是按高比例缩放
        if ($big_pic_info[0] > $big_pic_info[1]) {
            $ratio = $this->small_width / (int)$big_pic_info[0];
            $small_pic_width = $this->small_width;
            $small_pic_height = (int)($big_pic_info[1] * $ratio);
        } else {
            $ratio = $this->small_height / (int)$big_pic_info[1];
            $small_pic_height = $this->small_height;
            $small_pic_width = (int)($big_pic_info[0] * $ratio);
        }
        //echo $small_pic_width = (int)($big_pic_info[0]*$ratio);
        //echo $small_pic_height = (int)($big_pic_info[1]*$ratio);
        //是否打图片水印
        if ($this->is_ico_pic) {
            //打图片水印
            @imagecopy($big_pic, $new_pic, $this->src_x, $this->src_y, 0, 0, $new_pic_info[0], $new_pic_info[1]);
        }
        //是否打文字水印
        if ($this->is_text) {
            //设置文字颜色
            $text_color = @imagecolorallocate($big_pic, $rgb[0], $rgb[1], $rgb[2]);
            //转换文字编码
            $text = @iconv($this->ut, "utf-8", $this->ico_text);
            //打文字水印
            @imagettftext($big_pic, 12, 0, $this->src_x, $this->src_y, $text_color, "simkai_0.ttf", $text);
        }
        //新建一个新图片的画板
        $new_pic = @imagecreatetruecolor($small_pic_width, $small_pic_height);
        //生成缩略图
        @imagecopyresized($new_pic, $big_pic, 0, 0, 0, 0, $small_pic_width, $small_pic_height, $big_pic_info[0], $big_pic_info[1]);
        //输出图
        $this->createimageforsuffix($big_pic, $new_pic);
    }
    /** 
     * 类内部的功能函数把#000000转换成255,255,255
     */
    private function convcolor() {
        $rgb = array();
        $color = preg_replace("/#/", "", $this->font_color);
        $c = hexdec($color);
        $r = ($c >> 16) & 0xff;
        $g = ($c >> 8) & 0xff;
        $b = $c & 0xff;
        $rgb[0] = $r;
        $rgb[1] = $g;

        $rgb[2] = $b;

        return $rgb;

    }

}

//调用方法

$pic = new smallpic("002.jpg", 600, 300);

$pic->is_text = true;

$pic->is_ico_pic = true;

$pic->ico_pic = "./images/004.png";

$pic->ico_text = "新年快乐!";

//$pic->src_x = 80;

$pic->src_y = 80;

$pic->ut = "utf-8";

$pic->font_color = "#0521f8";

$pic->samll_pic_name = "hslsamll";

$pic->big_pic_name = "hslbig";

$pic->createsmallimage();



本文链接:http://www.phprm.com/tuxiang/fs4450.html

收藏随意^^请保留教程地址.

标签:php图片水印 php中文图片

相关文章

发表留言