PHP水引及缩略图

<?
class  resizeimage
{
    
// 图片类型
     var   $type ;
    
// 实际宽度
     var   $width ;
    
// 实际高度
     var   $height ;
    
// 改变后的宽度
     var   $resize_width ;
    
// 改变后的高度
     var   $resize_height ;
    
// 是否裁图
     var   $cut ;
    
// 源图象
     var   $srcimg ;
    
// 目标图象地址
     var   $dstimg ;
    
// 临????建的图象
     var   $im ;
    
var   $toimg ;

    
function  resizeimage( $img , $toimg , $wid ,   $hei , $c )
    {
        
$this -> srcimg  =   $img ;
        
$this -> toimg  =   $toimg ;
        
$this -> resize_width  =   $wid ;
        
$this -> resize_height  =   $hei ;
        
$this -> cut  =   $c ;
        
// 图片的类型
         $this -> type  =   substr ( strrchr ( $this -> srcimg , " . " ) , 1 );
        
// 初始化图象
         $this -> initi_img();
        
// 目标图象地址
         $this   ->  dst_img();
        
// --
         $this -> width  =  imagesx( $this -> im);
        
$this -> height  =  imagesy( $this -> im);
        
// 生成图象
         $this -> newimg();
        ImageDestroy (
$this -> im);
    }
    
function  newimg()
    {
        
// 改变后的图象的比例
         $resize_ratio   =  ( $this -> resize_width) / ( $this -> resize_height);
        
// 实际图象的比例
         $ratio   =  ( $this -> width) / ( $this -> height);
        
if (( $this -> cut) == " 1 " )
        
// 裁图
        {
            
if ( $ratio >= $resize_ratio )
            
// 高度优先
            {
                
$newimg   =  imagecreatetruecolor( $this -> resize_width , $this -> resize_height);
                imagecopyresampled(
$newimg ,   $this -> im ,   0 ,   0 ,   0 ,   0 ,   $this -> resize_width , $this -> resize_height ,  (( $this -> height) * $resize_ratio ) ,   $this -> height);
                ImageJpeg (
$newimg , $this -> dstimg);
            }
            
if ( $ratio < $resize_ratio )
            
// 宽度优先
            {
                
$newimg   =  imagecreatetruecolor( $this -> resize_width , $this -> resize_height);
                imagecopyresampled(
$newimg ,   $this -> im ,   0 ,   0 ,   0 ,   0 ,   $this -> resize_width ,   $this -> resize_height ,   $this -> width ,  (( $this -> width) / $resize_ratio ));
                ImageJpeg (
$newimg , $this -> dstimg);
            }
        }
        
else
        
// 不裁图
        {
            
if ( $ratio >= $resize_ratio )
            {
                
$newimg   =  imagecreatetruecolor( $this -> resize_width , ( $this -> resize_width) / $ratio );
                imagecopyresampled(
$newimg ,   $this -> im ,   0 ,   0 ,   0 ,   0 ,   $this -> resize_width ,  ( $this -> resize_width) / $ratio ,   $this -> width ,   $this -> height);
                ImageJpeg (
$newimg , $this -> dstimg);
            }
            
if ( $ratio < $resize_ratio )
            {
                
$newimg   =  imagecreatetruecolor(( $this -> resize_height) * $ratio , $this -> resize_height);
                imagecopyresampled(
$newimg ,   $this -> im ,   0 ,   0 ,   0 ,   0 ,  ( $this -> resize_height) * $ratio ,   $this -> resize_height ,   $this -> width ,   $this -> height);
                ImageJpeg (
$newimg , $this -> dstimg);
            }
        }
    }
    
// 初始化图象
     function  initi_img()
    {
        
if ( $this -> type == " jpg " )
        {
            
$this -> im  =  imagecreatefromjpeg( $this -> srcimg);
        }
        
if ( $this -> type == " gif " )
        {
            
$this -> im  =  imagecreatefromgif( $this -> srcimg);
        }
        
if ( $this -> type == " png " )
        {
            
$this -> im  =  imagecreatefrompng( $this -> srcimg);
        }
    }
    
// 图象目标地址
     function  dst_img()
    {
        
$full_length    =   strlen ( $this -> srcimg);
        
$type_length    =   strlen ( $this -> type);
        
$name_length    =   $full_length - $type_length ;
        
$name           =   substr ( $this -> srcimg , 0 , $name_length - 1 );
        
$smallpath      =   $this -> toimg . " / " ;
        
$smallname      =   substr ( $name , strrpos ( $name , " / " ) + 1 );
        
$this -> dstimg  =   $smallpath . $smallname . " . " . $this -> type;
    }
}
function  getInfo( $Image
    { 
        
$info = @ getimagesize ( $Image ); 
        
if ( $info
        { 
            
$return [ " width " ] = $info [ 0 ]; 
            
$return [ " heigh " ] = $info [ 1 ]; 
            
$return [ " mime " ] = $info [ " mime " ]; 
            
$return [ " channels " ] = $info [ " channels " ]; 
            
$return [ " bits " ] = $info [ " bits " ]; 
            
return   $return
        } 
        
return
    } 
function  watermark( $Image , $srcimg
    { 
        
$info = getInfo( $Image ); 
        
$srcimg_info = getInfo( $srcimg ); 
        
if ( ! $info
        { 
            
return   0
        } 
        
$file = $Image
        
$srcimg_width = $srcimg_info [ " width " ];
        
$srcimg_height = $srcimg_info [ " heigh " ];
        
$nimage = @imagecreatetruecolor( $info [ " width " ] , $info [ " heigh " ]); 
        
$white = @imagecolorallocate( $nimage , 255 , 255 , 255 ); 
        
$black = @imagecolorallocate( $nimage , 0 , 0 , 0 ); 

        
$simage   = @imagecreatefromjpeg( $file ); 
            @imagecopy(
$nimage , $simage , 0 , 0 , 0 , 0 , $info [ " width " ] , $info [ " heigh " ]); 
                
$wInfo   = getInfo( $srcimg ); 
                
$wimage   = @imagecreatefrompng( $srcimg ); 
                @imagecopy(
$nimage , $wimage , $info [ ' width ' ] / 2 - ( $srcimg_width / 2 ) , $info [ ' heigh ' ] / 2 - ( $srcimg_height / 2 ) , 0 , 0 , $wInfo [ " width " ] , $wInfo [ " heigh " ]); 
                
if ( $info [ " width " ] > 800   &&   $info [ " heigh " ] > 600
                { 
                    @imagecopy(
$nimage , $wimage , $info [ ' width ' ] / 2 - ( $srcimg_width / 2 ) , $info [ ' heigh ' ] / 2 - ( $srcimg_height / 2 ) , 0 , 0 , $wInfo [ " width " ] , $wInfo [ " heigh " ]); 
                } 
                @imagedestroy(
$wimage ); 
            
$result = @imagejpeg( $nimage , $file ); 
            @imagedestroy(
$nimage ); 
        @imagedestroy(
$simage ); 
        
return   $result
    } 
?>
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值