/*
*@author 27262681@qq.com
*copyright http://www.gowake.cn
*/
class img {
function __construct($arg = null) {
$args = func_get_args(); ,'create'),$args);
} C Function __call ($ Func, $ ARG) {
IF (Function_exists ('Image'. $ Func)) {
$ funcstr = 'Image '. $ Func;
} Elseif (function_exi sts ($ func)) {
$funcstr = $func; }else { error("そのようなクラスメソッドまたは関数はありません"); /*
*画像を作成
*@ param string/int 画像ファイルのパスまたは幅
*@param int 高さ、省略可
*@param string 6桁の16進整数
*/
function create($arg = null) {
$args = func_get_args();
if(is_file($args[0])) {
$this->size = $this->size ?
$type = image_type_to_extension($size[2], false);
$this->type = $this- >type : $type; 0]>0 and (int)$args[1]>0) {
$im = imagecreatetruecolor((int)$args[0],(int)$args[1]) または error("申し訳ありません、パラメーターが間違っています。 "); if(!$ args [2]){
$ color = hexdec(str_replace( '#'、 ''、$ args [2]));
$ args [1]);
");
}/// ImagealPhableending ($ Im, False); // これら 2 つの行は、透明チャネルの記録に使用されます
ImageSavealph ($ im, true);
ImageInterlace ($ im, true); return $im;
}
/*
*サムネイルを生成
*@param int $w 新しい画像の幅
*@param int $h 新しい画像の幅
*@param string/bool $color オプション、new 背景色画像の false または空を透明にします
*@param bool $lashen オプション、ストレッチするかどうか、デフォルトはストレッチしません
*/
function suolue($w = null,$h = null,$color = false, $ lashen = false){$ w = $ h * $ w_o/$ h_o; ; $ $ w;
/*
*画像に書き込みます
*@param string $str 書き込む文字列
*@param array $arg 文字列関連のパラメータ、連想配列、左は左への距離、右は距離右への距離、左が優先、上は上からの距離、下は下からの距離、上が優先; angle は角度、color は 6 桁の 16 進数の色、touming はテキストの透明度、フォントはフォント ファイルです
*/
function write( $str = '' , $arg = array()) {
$size = $arg['size'] $arg['size'] : 20; '] : 0 ;
$color = $arg['color'] ? $arg['color'] : '000000'; $touming = $arg['touming'] ? ;
arg['font'] : 'arial.ttf';
$boxarr($size,$angle,$font,$str); ;im);画像y($this->im);
$x_l = $x_r = $boxarr[0];
$y_t = $y_b = $boxarr[1]; $i = $i+2) {
i] > $x_r ? $boxarr[$i] : $x_r;
$y_t = $boxarr[$i+1] < gt; $ y_b? $ Boxarr [$ i+1]: $ y_b;
$ width = $ x_R -$ x_L; $im = $this->create($width*) 4,$height*4); $tm = hexdec('7ffffffff'); $color,$font,$str); i<$width*4;$i++) {
for($ii=0 ;$ii<$height*4;$ii++) {
;
(}
for ($ i = 0; $ i & lt; $高さ*4; $ i ++) {
for ($ ii = $ x_L; $ ii & lt; $ 幅*4; $ ii ++) {
IF (ImageColora ,$ii,$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;
休憩(2);
}
}
for($i=$height*4-1;$i>0;$i--) {
for($ii=$x_l;$ii& lt;=$x_r;$ii++) {
if(imagecolorat($im,$ii,$i) != $tm) {
$y_b = $i;
休憩(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);
$this->im を返します。
}
/*
*合并图片(图片水影など)
*@param string/resource $file 图片文件路径またはこの图片标识符
*@param array $arg 文字列相关のパラメータ、一关联数グループのため、左は距離左边距離、右は距離右边距離、左先、上は距離顶部距離、下は底部距離、上先;touming は文字透明度
*/
function merge($file,$arg = array( )) {
if(is_file($file)) {
$imc = $this->create($file);
}elseif(gettype($file)=='リソース') {
$imc = $file;
}else {
error("没有图片");
}
$touming = $arg['touming'] ? (int)$arg['touming'] : 100 ;
$w = 画像x($this->im);
$h = imagey($this->im);
$width = imagex($imc);
$height = imagey($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画像特有の、画像清晰度
*/
関数display($type = null,$filename = null,$zhiliang = null) {
if($type == null) {
$type = $this->type ? $this->type : 'jpg';
}
if(($type == 'jpeg' または $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);
}
$color を返します。
}
}
/*
関数エラー($msg,$debug = false) {
$err = 新しい例外($msg);
$str = "
n错误:n".print_r($err->getTrace(),1 )."n";
if($debug == true) {
file_put_contents(date('Y-m-d').".log",$str);
$str; を返します。
}else{
die($str);
}
}
*/
?>