Thumbnails are cleaner: imagecopysampled instead of imagecopyresized

I used imagecopyresized() to generate thumbnails before, but the effect was not ideal. Later, I replaced imagecopyresized() with imagecopysampled(), and the effect was much better, and the picture became clearer.

By comparing the pictures, it is obvious that imagecopysampled()the generated thumbnails have much higher definition.

Below is the code for imagecopysampled() to generate thumbnails.

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

Guess you like

Origin blog.csdn.net/mo3408/article/details/132194299