phpengine/engine/lib/Icon.class.php
2014-03-26 14:18:20 +08:00

117 lines
3.0 KiB
PHP
Executable File

<?php
class Icon{
function createIcon(){
$this->getImgSize();
//print_r( $this->img_info );
if( !$this->img_info ) return false;
$this->getNewSize();
$this->makeIcon();
}
function getImgSize(){
$this->img_info = @getImagesize( $this->path );
$this->w = $this->img_info[0];
$this->h = $this->img_info[1];
switch ( $this->img_info[2] ){
case 1:
$this->t = 'gif';
break;
case 2:
$this->t = 'jpg';
break;
case 3:
$this->t = 'png';
break;
}
}
function getNewSize(){
if( $this->w > $this->h ){
$this->nh = $this->size;
$this->nw = ($this->size/$this->h) * $this->w;
$this->type = 1;
}else{
$this->nw = $this->size;
$this->nh = ($this->size/$this->w) * $this->h;
$this->type = 0;
}
}
function makeIcon(){
$type = $this->type;
//$img_des = ImageCreateTrueColor ( $this->size, $this->size );
$img_des = ImageCreateTrueColor ( $this->size , $this->size );
$background = imagecolorallocate( $img_des , 255 , 255 , 255 );
imagefill( $img_des , 0 , 0 , $background );
switch ( $this->t ){
case 'gif':
$img_src = ImageCreateFromGIF ( $this->path );
break;
case 'jpg':
$img_src = ImageCreateFromJPEG ( $this->path );
break;
case 'png':
$img_src = ImageCreateFromPNG ( $this->path );
break;
}
if( $type === 1 ){
imagecopyresampled( $img_des, $img_src, 0, 0, ($this->w-$this->h)/2 , 0, $this->nw , $this->nh, $this->w, $this->h );
}elseif( $type === 0 ){
imagecopyresampled( $img_des, $img_src, 0, 0, 0 , ($this->h-$this->w)/2, $this->nw , $this->nh, $this->w, $this->h );
}else{
imagecopyresampled( $img_des, $img_src, 0, 0, 0 , 0 , $this->size, $this->size , $this->w, $this->h );
}
imageline( $img_des , 0 , 0 , 0 , ($this->size-1) , imagecolorallocate( $img_des , 220 , 220 , 220 ) );
imageline( $img_des , 0 , ($this->size-1) , ($this->size-1) , ($this->size-1) , imagecolorallocate( $img_des , 220 , 220 , 220 ) );
imageline( $img_des , ($this->size-1) , ($this->size-1) , ($this->size-1) , 0 , imagecolorallocate( $img_des , 220 , 220 , 220 ) );
imageline( $img_des , ($this->size-1) , 0 , 0 , 0 , imagecolorallocate( $img_des , 220 , 220 , 220 ) );
//echo $this->dest ;
switch ( $this->t ){
case 'gif':
if ( empty( $this->dest ) ){
header( "Content-type: image/gif" );
return ImageGIF( $img_des );
}else{
return ImageGIF( $img_des, $this->dest );
}
break;
case 'jpg':
if ( empty( $this->dest ) ){
header ( "Content-type: image/jpeg" );
return ImageJPEG( $img_des );
}else{
return ImageJPEG( $img_des, $this->dest );
}
break;
case 'png':
if ( empty( $this->dest ) ){
header ( "Content-type: image/png" );
return ImagePNG( $img_des );
}else{
return ImagePNG( $img_des, $this->dest );
}
break;
}
}
}
/*
$icon = new Icon();
$icon->path = 'a.gif';
$icon->size = 64;
$icon->dest = 'b.gif';
$icon->createIcon();
*/
?>