php动态生成缩略图并输出显示的方法

生成缩略图是 web 开发中比较常见的需求,实现缩略图的方法也有很多,通常可以使用 PHP 库函数或第三方库来实现。下面是一个详细讲解如何使用 PHP 动态生成缩略图并输出显示的完整攻略:

生成缩略图是 web 开发中比较常见的需求,实现缩略图的方法也有很多,通常可以使用 PHP 库函数或第三方库来实现。下面是一个详细讲解如何使用 PHP 动态生成缩略图并输出显示的完整攻略:

第一步:获取原图和缩略图的路径

首先,需要获取需要生成缩略图的原图路径和要存储缩略图的路径。在示例中,我们使用 $_GET 获取图片的名称和大小参数,然后拼接出原图和缩略图的路径。

<?php
// 获取图片名称和缩略图大小参数
$image = $_GET['image'];
$size = isset($_GET['size']) ? $_GET['size'] : 200;

// 原图路径和文件名
$srcPath = 'uploads/' . $image;

// 缩略图路径和文件名
$thumbPath = 'uploads/thumbs/' . $size . '/' . $image;

// 如果缩略图文件已经存在,就直接输出该图片
if (file_exists($thumbPath)) {
    header('Content-Type: image/jpeg');
    echo file_get_contents($thumbPath);
    exit;
}

// 否则,生成缩略图并保存

第二步:使用 GD 库生成缩略图

PHP 的 GD 库可以处理图片的缩放、裁切等操作,因此我们可以使用它来生成缩略图。下面是使用 GD 库实现图像缩放的示例代码:

<?php
// 获取图片名称和缩略图大小参数
$image = $_GET['image'];
$size = isset($_GET['size']) ? $_GET['size'] : 200;

// 原图路径和文件名
$srcPath = 'uploads/' . $image;

// 缩略图路径和文件名
$thumbPath = 'uploads/thumbs/' . $size . '/' . $image;

// 如果缩略图文件已经存在,就直接输出该图片
if (file_exists($thumbPath)) {
    header('Content-Type: image/jpeg');
    echo file_get_contents($thumbPath);
    exit;
}

// 否则,生成缩略图并保存
list($srcWidth, $srcHeight, $type) = getimagesize($srcPath);

// 根据图片类型创建画布
switch ($type) {
    case IMAGETYPE_JPEG:
        $srcImage = imagecreatefromjpeg($srcPath);
        break;
    case IMAGETYPE_PNG:
        $srcImage = imagecreatefrompng($srcPath);
        break;
    case IMAGETYPE_GIF:
        $srcImage = imagecreatefromgif($srcPath);
        break;
    default:
        exit('Unsupported image type');
}

// 计算缩略图大小
if ($srcWidth > $srcHeight) {
    $thumbWidth = $size;
    $thumbHeight = round($srcHeight * $size / $srcWidth);
} else {
    $thumbWidth = round($srcWidth * $size / $srcHeight);
    $thumbHeight = $size;
}

// 创建缩略图画布
$thumbImage = imagecreatetruecolor($thumbWidth, $thumbHeight);

// 缩小并拷贝原图到缩略图
imagecopyresampled($thumbImage, $srcImage, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $srcWidth, $srcHeight);

// 保存缩略图
if (!is_dir(dirname($thumbPath))) {
    mkdir(dirname($thumbPath), 0777, true);
}
imagejpeg($thumbImage, $thumbPath);

// 输出缩略图
header('Content-Type: image/jpeg');
echo file_get_contents($thumbPath);

在这个例子中,我们首先获取要生成缩略图的原图路径和目标缩略图的路径。然后,我们检查缩略图是否已经被创建。如果缩略图已经存在,就直接输出该图像。否则,我们使用 PHP 的 GD 库创建一个缩略图并保存到磁盘上。

第三步:在 HTML 页面里输出缩略图

要在 HTML 页面中输出缩略图,我们可以使用 <img> 标签的 src 属性,指定缩略图的 URL 地址即可。下面是一个基本的 HTML 页面。

<!DOCTYPE html>
<html>
<head>
    <title>PHP Thumbnail Generator</title>
</head>
<body>
<?php
// 获取图片名称和缩略图大小参数
$image = $_GET['image'];
$size = isset($_GET['size']) ? $_GET['size'] : 200;

// 获取缩略图 URL 地址
$thumbUrl = 'generate.php?image=' . $image . '&size=' . $size;

// 输出缩略图
echo '<img src="' . $thumbUrl . '" alt="Thumbnail" />';
?>
</body>
</html>

以上就是使用 PHP 动态生成缩略图并输出的攻略,它涵盖了获取原图和缩略图的路径、使用 GD 库生成缩略图和在 HTML 页面中输出缩略图等三个方面。另外,还需注意设置图片的 MIME 类型,以便浏览器能够正确地渲染图片。

本文标题为:php动态生成缩略图并输出显示的方法

基础教程推荐