生成缩略图是 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动态生成缩略图并输出显示的方法 - Python技术站