'unknown', 1 => 'gif', 2 => 'jpeg', 3 => 'png', 4 => 'swf', 5 => 'psd', 6 => 'bmp', 7 => 'tif_ii', 8 => 'tiff_mm', 9 => 'jpc', 10 => 'jp2', 11 => 'jpx', 12 => 'jb2', 13 => 'swc', 14 => 'iff', 15 => 'wbmp', 16 => 'xbm', 17 => 'ico', 18 => 'webp' ); # 获取图片信息 $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; } }