之前用 imagecopyresized() 生成缩略图,但是效果不是太理想,后来把 imagecopyresized() 换成 imagecopysampled() ,效果好太多了,图片变得更加清晰了。
通过对比图,很明显看出,imagecopysampled()
生成的缩略图,清晰度高很多。
下面是imagecopysampled()生成缩略图的代码。
<?php$src_img = "1.jpg";
$dst_w = 200;
$dst_h = 125;list($src_w,$src_h)=getimagesize($src_img); // 获取原图尺寸$dst_scale = $dst_h/$dst_w; //目标图像长宽比
$src_scale = $src_h/$src_w; // 原图长宽比if ($src_scale>=$dst_scale){ // 过高$w = intval($src_w);$h = intval($dst_scale*$w);$x = 0;$y = ($src_h - $h)/3;
} else { // 过宽$h = intval($src_h);$w = intval($h/$dst_scale);$x = ($src_w - $w)/2;$y = 0;
}// 剪裁
$source=imagecreatefromjpeg($src_img);
$croped=imagecreatetruecolor($w, $h);
imagecopy($croped, $source, 0, 0, $x, $y, $src_w, $src_h);// 缩放
$scale = $dst_w / $w;