首页 > php图像处理 > php图片处理类,生成缩略图,增加水印,获取图片信息

php图片处理类,生成缩略图,增加水印,获取图片信息

本文章提供这款图片处理类,他可以做的事情是把图片生成缩略图,可以给图片增加水印以及获取图片信息,算是比较实用代码又简洁的函数,实例代码如下:

<?php
class image {
    public $info = array();
    function __construct() {
        !extension_loaded('gd') && exit("www.111cn.net提示:服务器环境不支持gd库");
        return true;
    }
    function image() {
        $this->__construct();
    }
    function thumb($image, $thumb_width = 300, $thumb_height = 225) {
        $info = $this->info($image);
        $scale = min(1, min($thumb_width / $info['width'], $thumb_height / $info['height'])); //按比例缩放
        $thumb_width = intval($info['width'] * $scale);
        $thumb_height = intval($info['height'] * $scale);
        $createfunc = 'imagecreatefrom' . ($info['type'] == 'jpg' ? 'jpeg' : $info['type']);
        $im = $createfunc($image);
        $thumb_im = $info['type'] != 'gif' && function_exists('imagecreatetruecolor') ? imagecreatetruecolor($thumb_width, $thumb_height) : imagecreate($thumb_width, $thumb_height);
        imagecopyresampled($thumb_im, $im, 0, 0, 0, 0, $thumb_width, $thumb_height, $info['width'], $info['height']);
        if ($info['type'] == 'gif' || $info['type'] == 'png') {
            $bgcolor = imagecolorallocate($thumb_im, 0, 255, 0);
            imagecolortransparent($thumb_im, $bgcolor);
        }
        $imagefunc = 'image' . ($info['type'] == 'jpg' ? 'jpeg' : $info['type']);
        $thumbname = 'thumb_' . $info['name'] . '.' . $info['type'];
        $imagefunc($thumb_im, $info['path'] . $thumbname);
        imagedestroy($im);
        imagedestroy($thumb_im);
        return $info['path'] . $thumbname;
    }
    function watermark($image, $pos = 9, $watermarkimg = 'images/watermark.gif', $pct = 65, $text = '', $w_font = 5, $w_color = '#ff0000') {
        $imageinfo = $this->info($image);
        $source_w = $imageinfo['width'];
        $source_h = $imageinfo['height'];
        $imagecreatefunc = 'imagecreatefrom' . ($imageinfo['type'] == 'jpg' ? 'jpeg' : $imageinfo['type']);
        $im = $imagecreatefunc($image);
        if (!emptyempty($watermarkimg) && file_exists($watermarkimg)) //添加图片水印
        {
            $iswaterimage = true;
            $watermarkinfo = $this->info($watermarkimg);
            $width = $watermarkinfo['width'];
            $height = $watermarkinfo['height'];
            $watermarkcreatefunc = 'imagecreatefrom' . ($watermarkinfo['type'] == 'jpg' ? 'jpeg' : $watermarkinfo['type']);
            $watermark_im = $watermarkcreatefunc($watermarkimg);
        } else
        //添加文字水印
        {
            $iswaterimage = false;
            if (!emptyempty($w_color) && strlen($w_color) == 7) {
                $r = hexdec(substr($w_color, 1, 2));
                $g = hexdec(substr($w_color, 3, 2));
                $b = hexdec(substr($w_color, 5, 2));
            }
            $temp = imagettfbbox(ceil($w_font * 2.5) , 0, 'fonts/alger.ttf', $text);
            $width = $temp[2] - $temp[6];
            $height = $temp[3] - $temp[7];
            unset($temp);
        }
        switch ($pos) {
            case 0:
                $wx = mt_rand(0, ($source_w - $width));
                $wy = mt_rand(0, ($source_h - $height));
                break;
            case 1:
                $wx = 5;
                $wy = 5;
                break;
            case 2:
                $wx = ($source_w - $width) / 2;
                $wy = 5;
                break;
            case 3:
                $wx = $source_w - $width - 5;
                $wy = 5;
                break;
            case 4:
                $wx = 5;
                $wy = ($source_h - $height) / 2;
                break;
            case 5:
                $wx = ($source_w - $width) / 2;
                $wy = ($source_h - $height) / 2;
                break;
            case 6:
                $wx = $source_w - $width - 5;
                $wy = ($source_h - $height) / 2;
                break;
            case 7:
                $wx = 5;
                $wy = $source_h - $height - 5;
                break;
            case 8:
                $wx = ($source_w - $width) / 2;
                $wy = $source_h - $height - 5;
                break;
            default:
                $wx = $source_w - $width - 5;
                $wy = $source_h - $height - 5;
                break;
        }
        if ($iswaterimage) {
            if ($imageinfo['type'] == 'png') {
                imagecopy($im, $watermark_im, $wx, $wy, 0, 0, $width, $height);
            } else {
                imagecopymerge($im, $watermark_im, $wx, $wy, 0, 0, $width, $height, $pct);
            }
        } else {
            imagestring($im, $w_font, $wx, $wy, $text, imagecolorallocate($im, $r, $g, $b));
        }
        $imagefunc = 'image' . ($imageinfo['type'] == 'jpg' ? 'jpeg' : $imageinfo['type']);
        $imagefunc($im, $image);
        imagedestroy($im);
        return true;
    }
    function info($image) {
        $info = array();
        $info['size'] = filesize($image);
        $imageinfo = getimagesize($image);
        $info['width'] = $imageinfo[0];
        $info['height'] = $imageinfo[1];
        $info['width_height'] = $imageinfo[3];
        $info['mime'] = $imageinfo['mime'];
        unset($imageinfo);
        $imageinfo = pathinfo($image);
        $info['path'] = $imageinfo['dirname'] . '/';
        $info['type'] = strtolower($imageinfo['extension']); //图片类型,不含'.'
        $info['name'] = $imageinfo['filename'];
        unset($imageinfo, $name);
        $this->info = $info;
        return $info;
    }
}


本文地址:http://www.phprm.com/tuxiang/fs4454.html

转载随意,但请附上文章地址:-)

标签:php生成缩略图 php图片处理类

相关文章

发表留言