'gif',2=>'jpeg',3=>'png'); # 获取图片信息 $imginfo=getimagesize($filename); $img_w=$imginfo[0]; $img_h=$imginfo[1]; self::$img_type=$filetype[$imginfo[2]]; $thumb_h=$height; # 固定背景画布的高度 $height=$img_h/($img_w/$width); # 图片等比例缩放后的高度=原图的高度÷(原图的宽度÷背景画布固定宽带) # 创建新的背景画布 if($height>=$thumb_h){ $thumb=imagecreatetruecolor($width,$thumb_h); @imagealphablending($thumb, false); //这里很重要,意思是不合并颜色,直接用$img图像颜色替换,包括透明色;2-1 @imagesavealpha($thumb, true); //这里很重要,意思是不要丢了$thumb图像的透明色;2-2 EasyImage修改 }else{ $thumb=imagecreatetruecolor($width,$height); @imagealphablending($thumb, false); //这里很重要,意思是不合并颜色,直接用$img图像颜色替换,包括透明色;2-1 @imagesavealpha($thumb, true); //这里很重要,意思是不要丢了$thumb图像的透明色;2-2 EasyImage修改 $thumb_h=$height; } # 载入要缩放的图片 $loadimg='imagecreatefrom'.self::$img_type; $tmp_img=$loadimg($filename); switch($valign){ case 'top':{ $dst_y=0; break; } case 'middle':{ $dst_y=($img_h-$img_w/$width*$thumb_h)/2; break; } case 'bottom':{ $dst_y=$img_h-$img_w/$width*$thumb_h; break; } default:{ $dst_y=0; break; } } # 合成缩略图 imagecopyresampled($thumb,$tmp_img,0,0,0,$dst_y,$width,$height, $img_w, $img_h); ob_clean(); # 展示图片 ob_start(); $showimg='image'.self::$img_type; $showimg($thumb); # 输出原始图象流 $thumb_img = ob_get_clean(); # 释放资源 imagedestroy($tmp_img); imagedestroy($thumb); return $thumb_img; } }