> 백엔드 개발 > PHP 튜토리얼 > 워터마크와 썸네일을 용이하게 하는 pimchanok leuwisetpaibul PHP 그래픽 클래스

워터마크와 썸네일을 용이하게 하는 pimchanok leuwisetpaibul PHP 그래픽 클래스

WBOY
풀어 주다: 2016-07-29 08:39:54
원래의
932명이 탐색했습니다.

코드 복사 코드는 다음과 같습니다.


/*
*@author  27262681@qq.com
*copyright http://www.gowake.cn
*/
class img {
함수 __construct($arg = null) {
$args = func_get_args()
if($arg == null) {
return null; ->im = call_user_func_array(array($this,'create'),$args)
}
function __call($func,$arg) {
if(function_exists('image' .$ func)) {
            $funcstr = 'image'.$func; error ("해당 메소드 또는 함수 없음")
}
Return Call_user_func_array ($ funcstr, $ arg); 경로 또는 너비
*@param int 높이, 생략 가능
*@param 문자열 6자리 16진수 정수
*/
function create($arg = null) {
$args = func_get_args();
if(is_file($args[0])) {
$this->file = $args[0]
$size = getimagesize($this ->file) 또는 error('이미지 유형 오류');
$this->size ? $this->size : $size> $type = image_type_to_extension( $size[2] ,false);
$this->type ? $this->type : $type;
$createfunc = 'imagecreatefrom'.
            $im = $createfunc($this->file);
                                                                                   $im = imagecreatetruecolor((int)$args[0],(int)$args[1]) 또는 error("죄송합니다. 매개변수가 잘못되었습니다! ");
                                               ​else {
$color = hexdec(str_replace('#','',$args[2]));
     }
       $this->size = $this ->size? 매개변수 오류!");
}
//imagealphablending($im,false);//이 두 줄은 투명 채널을 기록하는 데 사용됩니다.
Imagesavealpha($im,true); );//인터레이스 켜기
           return $im; $h 새 그림의 너비
*@param string/bool $color 선택 사항, 새 그림의 배경색, 투명하게 하려면 false 또는 비어 있음
*@param bool $ lashen 선택 사항, 늘일지 여부, 기본값은 늘이지 않음 늘이기
*/
function suolue($w = null,$h = null,$color = false,$lashen = false) {
$ w_o = Imagesx($this->im);
$h_o = Imagesy($this->im)
if($w == null and $h != null) {
$ w = $h * $w_o/$h_o;
                                                                                 > $w /$h){
                                                                                 
           $w_n = $w 🎜> Imagecopyresampled($im,$ this->im,$x,$y,0,0,$w_n,$h_n, $w_o,$h_o);
                                                                                                        >im = $im
$im 반환
}
/*
*그림에 쓰기
*@param string $str 쓸 문자열
*@param array $arg 문자열 관련 매개변수, 연관배열, 왼쪽은 거리 왼쪽 거리, 오른쪽은 오른쪽으로부터의 거리, 왼쪽이 우선, 상단은 상단으로부터의 거리, 하단은 하단으로부터의 거리, 상단이 각도, 색상은 6자리 16진수 색상입니다. 은 텍스트 투명도이고 글꼴은 글꼴 파일입니다.
*/
function write($str = '', $arg = array()) {
$size = $arg['size'] ? $arg['angle'] : 20;
$angle = $arg['angle'] : 0
$color = $arg['color'] ? arg['color'] : '000000';
$touming = $arg['touming'] ? $arg['touming'] : 100
$touming = dechex((100-$touming)* 127/100);
$color = hexdec ($touming.str_replace("#","",$color))
$font = $arg['font'] ? ] : 'arial.ttf';
$ boxarr = imagettfbbox($size,$angle,$font,$str)
$w = Imagesx($this->im); = 이미지($this->im);
$x_l = $x_r = $boxarr[0]
$y_t = $y_b = $boxarr[1]
for($i=0; ;$i                 $x_l = $boxarr[$i] < $boxarr[$i] : $x_l; $y_t = $boxarr[$i 1] < $y_t ? $y_t ? $boxarr[$i 1] : $y_b; = $x_r - $x_l;
Shift*/
$im = $this->create($width*4,$height*4)
$tm = hexdec('7ffffffff');
imagettftext($im,$ size,$angle,$width*2,$height*2,$color,$font,$str)
for($i=0;$i<$width* 4;$i ) {
for($ii=0;$ii<$height*4;$ii ) {
                                                                           >                                 {
for($ii= $x_l;$ii<$ 너비*4;$ii ) {
                                                                     나누기 (2)
                                    
        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_ 난;$ 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 배열 인수 字符串关的参数,为一个关联数组,왼쪽 为距左边距离,오른쪽为距右边距离,왼쪽优先,위为距顶距离,아래为距底부距离,위优先;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 = 이미지($this->im);
        $width = 이미지x($imc);
        $height = 이미지($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 $ 유형
*@param String $ filename 要转存的文件路径 *@param int $ zhiliang jpeg 图片특별한 图image清晰degree
    */
    함수 표시($type = null,$filename = null,$zhiliang = null) {
        if($type == null) {
            $type = $this->유형 ? $this->유형 : 'jpg';
        }
        if(($type == 'jpeg' 또는 $type == 'jpg') 및 $zhiliang == null) {
            $type = 'jpeg';
            $zhiliang = 100;
        }
        if($filename == null) {
            header('콘텐츠 유형: 이미지/'.$type);
        }
        $displayfunc = 'image'.$type;
        $displayfunc($this->im,$filename,$zhiliang);
        imagedestroy($this->im);
    }
    function randcolor($a,$b) {
        $a = $a>255 ? 255 : (정수)$a;
        $a = $a<0 ? 0 : (int)$a;
        $b = $b>255 ? 255 : (정수)$b;
        $b = $b<0 ? 0 : (정수)$b;
        for($i=0;$i<3;$i ) {
           $color .= str_pad(dechex(mt_rand($a,$b)), 2, "0", STR_PAD_LEFT);
        }
        $color를 반환합니다.
    }
}
/*
함수 오류($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);
        $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('왼쪽'=>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 方便water印 and 缩略图的图shape类,包括了pimchanok leuwisetpaibul 方仅容,希望对PHP教程有兴趣的朋友有所帮助。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿