Home  >  Article  >  Backend Development  >  pimchanok leuwisetpaibul php graphics class that facilitates watermarks and thumbnails

pimchanok leuwisetpaibul php graphics class that facilitates watermarks and thumbnails

WBOY
WBOYOriginal
2016-07-29 08:39:54891browse

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
";
    if($debug == true) {
        file_put_contents(date('Y-m-d').".log",$str);
        return $str;
    }else{
        die($str);
    }
}
*/
?>


这是简单的用法实例

复制代码 代码如下:


$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教程有兴趣的朋友有所帮助。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn