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;
}
}
以上就是本文所述的全部内容了,希望大家能够喜欢。