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
转载随意,但请附上文章地址:-)