PHP生成缩略图(测试可用,不失真)

<?PHP
class HanroadClass
{
/**//**********************
利用PHP的GD库生成缩略图。
支持图片格式:jpg,gif,png

$source_img:  源图象完整路径
$target_dir:  目标图象目录
$target_name: 目标图象名称
$new_width:   目标图象宽
$new_height:  目标图象高
$if_cut:      是否裁图
1(裁图): 裁图则按设置的大小生成目标图象
0(不裁): 不裁则按比例生成目标图象
———————
QQ:38188141
blog:http://www.cooant.com
**********************/
function HrResize($source_imHPg,$target_dir,$target_name,$new_width,$new_height,$if_cut)
{
//图片类型
$img_type = strtolower(substr(strrchr($source_img,”.”),1));

//图象的完整目标路径
$tar_url = $target_dir.”/”.$target_name.”.”.$img_type;

//初始化图象
if($img_type==”jpg”) $temp_img = imagecreatefromjpeg($source_img);
if($img_type==”gif”) $temp_img = imagecreatefromgif($source_img);
if($img_type==”png”) $temp_img = imagecreatefrompng($source_img);

//原始图象的宽和高
$old_width  = imagesx($temp_img);
$old_height = imagesy($temp_img);

//改变前后的图象的比例
$new_ratio = $new_width/$new_height;
$old_ratio = $old_width/$old_height;

//生成新图象的参数
//情况一:裁图 则按设置的大小生成目标图象
if($if_cut==”1″)
{
$new_width  = $new_width;
$new_height = $new_height;
//高度优先
if($old_ratio>=$new_ratio)
{
$old_width  = $old_height*$new_ratio;
$old_height = $old_height;
}
//宽度优先
else
{
$old_width  = $old_width;
$old_height = $old_width/$new_ratio;
}
}
//情况二:不裁图 则按比例生成目标图象
else
{
$old_width  = $old_width;
$old_height = $old_height;
//高度优先
if($old_ratio>=$new_ratio)
{
$new_width  = $new_width;
$new_height = $new_width/$old_ratio;
}
//宽度优先
else
{
$new_width  = $new_height*$old_ratio;
$new_height = $new_height;
}
}
//生成新图片
$new_img = imagecreatetruecolor($new_width,$new_height);
imagecopyresampled($new_img,$temp_img,0,0,0,0,$new_width,$new_height,$old_width,$old_height);

if($img_type==”jpg”) imagejpeg($new_img,$tar_url);
if($img_type==”gif”) imagegif($new_img,$tar_url);
if($img_type==”png”) imagepng($new_img,$tar_url);
}
}
?>

Post a Comment

You must be logged in to post a comment.