如何使用 php gd 创建自定义缩略图

Posted

技术标签:

【中文标题】如何使用 php gd 创建自定义缩略图【英文标题】:How can I create custom thumbnails using php gd 【发布时间】:2016-09-11 12:08:36 【问题描述】:

我想创建一个具有特定自定义宽度和高度的缩略图。该函数仅使用创建具有最大设置宽度/高度的缩略图。

如何调整以下函数以给我一个定义的宽度/高度,例如 50x50、75x75、100x100。

$original_photo = "photos/photo.extension";
$newcopy = "photos/thumbnails/photo.extension";
$copy_w = 50;
$copy_h = 50;
$extension = explode('.', 'photo.extension');
$extension = end($extension);

function create_thumbnail($original_photo, $newcopy, $copy_w, $copy_h, $extension) 
    list($original_w, $original_h) = getimagesize($original_photo);
    $scale_ratio = $original_w / $original_h;
    if (($copy_w / $copy_h) > $scale_ratio) 
        $copy_w = $copy_h * $scale_ratio;
     else 
        $copy_h = $copy_w / $scale_ratio;
    
    $img = '';
    if ($extension == 'gif') 
        $img = imagecreatefromgif($original_photo);
     elseif ($extension == 'png') 
        $img = imagecreatefrompng($original_photo);
     else 
        $img = imagecreatefromjpeg($original_photo);
    
    $true_color = imagecreatetruecolor($copy_w, $copy_h);
    imagecopyresampled($true_color, $img, 0, 0, 0, 0, $copy_w, $copy_h, $original_w, $original_h);
    if (imagejpeg($true_color, $newcopy, 80) == true) 
        return true;
     else 
        return false;
    

【问题讨论】:

欢迎来到 ***!请阅读How do I ask a good question? 【参考方案1】:

php/GD 中处理图像可能会很痛苦。有很多边缘情况,尤其是在处理透明 PNG/GIF 时。

如果可能的话,我厚颜无耻地推荐一个我写的库来处理这样的事情:SimpleImage 3.0

使用SimpleImage,可以通过如下代码达到想要的效果:

// Load the image from image.jpg
$image = new \claviska\SimpleImage('image.jpg');

// Create a 50x50 thumbnail, convert to PNG, and write to thumbnail.png
$image->thumbnail(50, 50)->toFile('thumbnail.png', 'image/png');

有关thumbnail 方法的工作原理和可用参数的更多详细信息,请参阅this page。

【讨论】:

以上是关于如何使用 php gd 创建自定义缩略图的主要内容,如果未能解决你的问题,请参考以下文章

PHP GD - 如何修改我的缩略图创建器以从中心裁剪肖像图像?

使用 php GD 创建 MP4 视频缩略图

PHP 使用GD创建缩略图维持宽高比

如何使用 GD 库从上传的文件中自动创建缩略图

linux系统如何让php使用GD库函数

GD创建图像缩略图