PHP实现批量生成App各种尺寸Logo
使用PHPGD,使用良好,一键剪裁各种尺寸,打包下载。经常换icon的懂的,美工给你一个1024的logo,你得ps出各种尺寸,于是有了这个东西。
核心代码
<?php classimage{ /** *sourceimage * *@varstring|array */ private$source; /** *temporayimage * *@varfile */ private$image; private$ext; /** *erros * *@vararray */ private$error; /** *construct * *@paramstring|array$source */ publicfunction__construct($source=NULL){ if($source!=NULL){ $this->source($source); } } /** *setthesourceimage * *@paramstring|array$source */ publicfunctionsource($source){ if(!is_array($source)){ $this->source["name"]=$source; $this->source["tmp_name"]=$source; $type=NULL; $ext=strtolower(end(explode(".",$source))); switch($ext){ case"jpg" : case"jpeg":$type="image/jpeg";break; case"gif" :$type="image/gif";break; case"png" :$type="image/png";break; } $this->source["type"]=$type; }else{ $this->source=$source; } $this->destination=$this->source["name"]; } /** *resizetheimage * *@paramint$width *@paramint$height */ publicfunctionresize($width=NULL,$height=NULL){ if(isset($this->source["tmp_name"])&&file_exists($this->source["tmp_name"])){ list($source_width,$source_height)=getimagesize($this->source["tmp_name"]); if(($width==NULL)&&($height!=NULL)){ $width=($source_width*$height)/$source_height; } if(($width!=NULL)&&($height==NULL)){ $height=($source_height*$width)/$source_width; } if(($width==NULL)&&($height==NULL)){ $width=$source_width; $height=$source_height; } switch($this->source["type"]){ case"image/jpeg":$created=imagecreatefromjpeg($this->source["tmp_name"]);break; case"image/gif" :$created=imagecreatefromgif($this->source["tmp_name"]); break; case"image/png" :$created=imagecreatefrompng($this->source["tmp_name"]); break; } $this->image=imagecreatetruecolor($width,$height); imagecopyresampled($this->image,$created,0,0,0,0,$width,$height,$source_width,$source_height); } } /** *addwatermarkonimage * *@paramstring$mark *@paramint$opac *@paramint$x_pos *@paramint$y_pos */ publicfunctionwatermark($mark,$opac,$x_pos,$y_pos){ if(file_exists($mark)&&($this->image!="")){ $ext=strtolower(end(explode(".",$mark))); switch($ext){ case"jpg" : case"jpeg":$watermark=imagecreatefromjpeg($mark);break; case"gif" :$watermark=imagecreatefromgif($mark); break; case"png" :$watermark=imagecreatefrompng($mark); break; } list($watermark_width,$watermark_height)=getimagesize($mark); $source_width=imagesx($this->image); $source_height=imagesy($this->image); if($x_pos=="top")$pos ="t";else$pos ="b"; if($y_pos=="left")$pos.="l";else$pos.="r"; $dest_x=0; $dest_y=0; switch($pos){ case"tr":$dest_x=$source_width-$watermark_width;break; case"bl":$dest_y=$source_height-$watermark_height;break; case"br":$dest_x=$source_width-$watermark_width;$dest_y=$source_height-$watermark_height;break; } imagecopymerge($this->image,$watermark,$dest_x,$dest_y,0,0,$watermark_width,$watermark_height,$opac); } } /** *croptheimage * *@paramint$x *@paramint$y *@paramint$width *@paramint$height */ publicfunctioncrop($x,$y,$width,$height){ if(isset($this->source["tmp_name"])&&file_exists($this->source["tmp_name"])&&($width>10)&&($height>10)){ switch($this->source["type"]){ case"image/jpeg":$created=imagecreatefromjpeg($this->source["tmp_name"]);break; case"image/gif" :$created=imagecreatefromgif($this->source["tmp_name"]); break; case"image/png" :$created=imagecreatefrompng($this->source["tmp_name"]); break; } $this->image=imagecreatetruecolor($width,$height); imagecopy($this->image,$created,0,0,$x,$y,$width,$height); } } /** *createfinalimagefile * *@paramstring$destination *@paramint$quality */ publicfunctioncreate($destination,$quality=100){ if($this->image!=""){ $extension=substr($destination,-3,3); switch($extension){ case"gif": imagegif($this->image,$destination,$quality); break; case"png": $quality=ceil($quality/10)-1; imagepng($this->image,$destination,$quality); break; default : imagejpeg($this->image,$destination,$quality); break; } } } /** *checkifextensionisvalid * */ publicfunctionvalidate_extension(){ if(isset($this->source["tmp_name"])&&file_exists($this->source["tmp_name"])){ $exts=array("image/jpeg","image/pjpeg","image/png","image/x-png"); $ext=$this->source["type"]; $valid=0; $this->ext='.not_found'; if($ext==$exts[0]||$ext==$exts[1]){ $valid=1; $this->ext='.jpg'; } //if($ext==$exts[2]){ // $valid=1; // $this->ext='.gif'; //} if($ext==$exts[2]||$ext==$exts[3]){ $valid=1; $this->ext='.png'; } if($valid!=1){ $this->error.="extension"; } }else{ $this->error.="source"; } } /** *checkifthesizeiscorrect * *@paramint$max */ publicfunctionvalidate_size($max){ if(isset($this->source["tmp_name"])&&file_exists($this->source["tmp_name"])){ $max=$max*1024; if($this->source["size"]>=$max){ $this->error.="size"; } }else{ $this->error.="source"; } } /** *checkifthedimensioniscorrect * *@paramint$limit_width *@paramint$limit_height */ publicfunctionvalidate_dimension($limit_width,$limit_height){ if(isset($this->source["tmp_name"])&&file_exists($this->source["tmp_name"])){ list($source_width,$source_height)=getimagesize($this->source["tmp_name"]); if(($source_width>$limit_width)||($source_height>$limit_height)){ $this->error.="dimension"; } }else{ $this->error.="source"; } } /** *getthefounderrors * */ publicfunctionerror(){ $error=array(); if(stristr($this->error,"source"))$error[]="找不到上传文件"; if(stristr($this->error,"dimension"))$error[]="上传图片尺寸太大"; if(stristr($this->error,"extension"))$error[]="不符合要求的格式"; if(stristr($this->error,"size"))$error[]="图片文件太大"; return$error; } publicfunctionerror_string(){ $error=""; if(stristr($this->error,"source"))$error.="找不到上传文件/"; if(stristr($this->error,"dimension"))$error.="上传图片尺寸太大/"; if(stristr($this->error,"extension"))$error.="不符合要求的格式/"; if(stristr($this->error,"size"))$error.="图片文件太大/"; if(eregi("/$",$error)){ $error=substr($error,0,-3); } return$error; } publicfunctionext(){ return$this->ext; } }
以上就是本文所述的全部内容了,希望大家能够喜欢。