Home > Article > Backend Development > pimchanok leuwisetpaibul php graphics class that facilitates watermarks and thumbnails
Copy the code The code is as follows:
/*
*@author 27262681@qq.com
*copyright http://www.gowake.cn
*/
class img {
function __construct($arg = null) {
$args = func_get_args();
if($arg == null) {
return null;
$this->im = call_user_func_array(array($this,'create'),$args);
}
function __call($func,$arg) {
str = $func;
} else {
error("No such class method or function");
$func;
*Create image
*@param string/int image File path or width
*@param int height, can be omitted
*@param string 6-digit hexadecimal integer
*/
function create($arg = null) {
$args = func_get_args();
if(is_file( { ;size = $this->size ? $this->size : $size;
$type = image_type_to_extension($size[2],false); $this->type = $this->type ? $this->type : $type;
$createfunc = 'imagecreatefrom'.$type; $this-> 0 and (int)$args[1]>0) {
$im = imagecreatetruecolor((int)$args[0],(int)$args[1]) or error("Sorry, the parameter is wrong! ");
if(!$args[2]) {
$color = hexdec(str_replace('#' ,'',$args[2]));
$args[1]);
");
//imagealphablending return $im;
}
/*
*Generate thumbnail
*@param int $w The width of the new picture
*@param int $h The width of the new picture
*@param string/bool $color optional, new picture The background color, false or empty is transparent
*@param bool $lashen Optional, whether to stretch, the default is not stretching
*/
function suolue($w = null,$h = null,$color = false,$ lashen = false) {
using using using using using using through using ’ through ’ through ’ using ’s ’ using using ‐ ‐ ‐ ‐ $w = $h * $w_o/$h_o;
}elseif ($w != null and $h == null){
$h = $w * size = null;
$im = $this->create($w,$h,$color);
$w_n = $w;
$h_n = $h;
if($w_o/$h_o > $ w/$h) {
{
$w_n = $h*$w_o/$h_o; = $w;
$h_n = $h ;
) ;
//imagedestroy($this->im);
/*
*Write on the picture
*@param string $str The string to be written
*@param array $arg String related parameters, an associative array, left is the distance from the left, right is the distance from the right , left takes priority, top is the distance from the top, bottom is the distance from the bottom, top takes priority; angle is the angle, color is the 6-digit hexadecimal color, touming is the text transparency, font is the font file
*/
function write($ str = '' , $arg = array()) {
using $arg['angle'] ? 'angle'] : 0 ;
$color = $arg['color'] ? $arg['color'] : '000000';
$touming = $arg['touming'] ? $arg['touming'] : 100;
['font'] ? $arg['font'] : 'arial.ttf';
$boxarr = imagettfbbox($size,$angle,$font,$str);
im);
$h = imagesy($this->im); $x_l ;$i<7;$i = $i+2) {
> $x_r ? $boxarr[$i] : $x_r;
$y_t = $boxarr[$i+1] < $y_t? [$i+1] > $y_b ? $boxarr[$i+1] : $y_b;
$width = $x_r - $x_l; Disposal*/ i $ iM = $ this- & gt; Create ($ width*4, $ height*4);
$ tm = hexdec ('7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffftext ($ IM, $ SIZE, $ Angle, $ Angle, $ Angle, $ ANGLE, $width*2,$height*2,$color,$font,$str);
for($i=0;$i<$width*4;$i++) {
for($ii=0;$ii< ;$height*4;$ii++) {
for($i=0;$i<$height*4;$i++) {
,$i) != $tm) {
}
for($i=$width*4-1;$i>0;$i--) {
for($ii=$y_t;$ii<$height*4;$ii++) {
if(imagecolorat($im,$i,$ii) != $tm) {
$x_r = $i;
break(2);
}
}
}
for($i=$height*4-1;$i>0;$i--) {
for($ii=$x_l;$ii<=$x_r;$ii++) {
if(imagecolorat($im,$ii,$i) != $tm) {
$y_b = $i;
break(2);
}
}
}
$x_off = $x_l - $width*2;
$y_off = $y_b - $height*2;
$width = $x_r - $x_l; //精确宽度
$height = $y_b - $y_t; //精确高度
imagedestroy($im);
if(isset($arg['left'])) {
$x = (int)$arg['left'] - $x_off;
}elseif (isset($arg['right'])){
$x = $w - (int)$arg['right'] - $width - $x_off;
}else {
$x = ($w - $width)/2 - $x_off;
}
if(isset($arg['top'])) {
$y = (int)$arg['top'] - $y_off + $height;
}elseif (isset($arg['bottom'])){
$y = $h - (int)$arg['bottom'] - $y_off;
}else {
$y = ($h + $height)/2 - $y_off;
}
imagettftext($this->im,$size,$angle,$x,$y,$color,$font,$str);
return $this->im;
}
/*
*合并图片(如图片水影)
*@param string/resource $file 图片文件路径或这图片标识符
*@param array $arg 字符串相关的参数,为一个关联数组,left 为距左边距离,right为距右边距离,left优先,top为距顶部距离,bottom为距底部距离,top优先;touming为文字透明度
*/
function merge($file,$arg = array()) {
if(is_file($file)) {
$imc = $this->create($file);
}elseif(gettype($file)=='resource') {
$imc = $file;
}else {
error("没有图片");
}
$touming = $arg['touming'] ? (int)$arg['touming'] : 100 ;
$w = imagesx($this->im);
$h = imagesy($this->im);
$width = imagesx($imc);
$height = imagesy($imc);
if(isset($arg['left'])) {
$x = (int)$arg['left'];
}elseif (isset($arg['right'])){
$x = $w - (int)$arg['right'] - $width;
}else {
$x = ($w - $width)/2;
}
if(isset($arg['top'])) {
$y = (int)$arg['top'];
}elseif (isset($arg['bottom'])){
$y = $h - $height - $arg['bottom'];
}else {
$y = ($h - $height)/2;
}
imagecopymergegray($this->im,$imc,$x,$y,0,0,$width,$height,$touming);
}
/*
*输出图片
*@param string $type
*@param string $filename 要转存的文件路径
*@param int $zhiliang jpeg图片特有的,图像清晰度
*/
function display($type = null,$filename = null,$zhiliang = null) {
if($type == null) {
$type = $this->type ? $this->type : 'jpg';
}
if(($type == 'jpeg' or $type == 'jpg') and $zhiliang == null) {
$type = 'jpeg';
$zhiliang = 100;
}
if($filename == null) {
header('Content-type: image/'.$type);
}
$displayfunc = 'image'.$type;
$displayfunc($this->im,$filename,$zhiliang);
imagedestroy($this->im);
}
function randcolor($a,$b) {
$a = $a>255 ? 255 : (int)$a;
$a = $a<0 ? 0 : (int)$a;
$b = $b>255 ? 255 : (int)$b;
$b = $b<0 ? 0 : (int)$b;
for($i=0;$i<3;$i++) {
$color .= str_pad(dechex(mt_rand($a,$b)), 2, "0", STR_PAD_LEFT);
}
return $color;
}
}
/*
function error($msg,$debug = false) {
$err = new Exception($msg);
$str = "
n<span>错误:</span>n".print_r($err->getTrace(),1)."n";
复制代码 代码如下:
$img = new img('a.png');
$m = $img->im;
$im = $img->suolue(100);
$img->im = $m;
$img->suolue(300);
$img->merge($m,array('left'=>0,'top'=>0,'touming'=>60));
$img->merge($im,array('right'=>0,'top'=>0,'touming'=>60));
$img->merge($im,array('left'=>0,'bottom'=>0,'touming'=>60));
$img->merge($im,array('right'=>0,'bottom'=>0,'touming'=>60));
$img->write("春天来了",array('left'=>0,'top'=>0,'size'=>30,'color'=>$img->randcolor(0,180),'angle'=>-45,'font'=>'simfang.ttf','touming'=>80));
$img->write("春天来了",array('left'=>0,'bottom'=>0,'size'=>30,'color'=>$img->randcolor(0,180),'angle'=>45,'font'=>'simfang.ttf','touming'=>80));
$img->write("春天来了",array('right'=>0,'bottom'=>0,'size'=>30,'color'=>$img->randcolor(0,180),'angle'=>-45,'font'=>'simfang.ttf','touming'=>80));
$img->write("春天来了",array('right'=>0,'top'=>0,'size'=>30,'color'=>$img->randcolor(0,180),'angle'=>45,'font'=>'simfang.ttf','touming'=>80));
$img->display("gif");
以上就介绍了pimchanok leuwisetpaibul php 方便水印和缩略图的图形类,包括了pimchanok leuwisetpaibul方面的内容,希望对PHP教程有兴趣的朋友有所帮助。