<? 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 ; } ?>