php生成缩略图示例代码分享(使用gd库实现)
以下是一个利用PHP的GD库生成缩略图的实例,供您参考:
我们需要一个上传图片的表单。让我们创建一个简单的HTML表单来上传图片:
```html
```
然后在PHP中处理这个上传的图片,生成缩略图。以下是相关PHP代码:
```php
header("content-type:text/html;charset=utf-8"); //设置响应内容的类型和字符集
// 检查是否有文件上传过来
if(empty($_FILES['image']['name'])){
echo "请上传文件";
exit;
}
// 检查文件上传是否有错误
if($_FILES['image']['error'] != UPLOAD_ERR_OK){
echo "上传出错";
exit;
}
// 检查文件类型是否合法,这里只允许上传jpg、png、jpeg和gif格式的图片
$allowedTypes = array("jpg", "png", "jpeg", "gif");
$fileExtension = strtolower(pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION));
if(!in_array($fileExtension, $allowedTypes)){
echo "只允许上传jpg、png、jpeg和gif格式的图片";
exit;
}
// 生成唯一的文件名,避免同名文件覆盖问题
$fileName = date('YmdHis') . rand() . "." . $fileExtension;
$sourcePath = $_FILES['image']['tmp_name']; // 上传文件的临时路径
$destinationPath = "uploads/" . $fileName; // 目标路径,即上传后的文件路径
move_uploaded_file($sourcePath, $destinationPath); // 移动文件到指定目录
// 创建缩略图
$originalImage = imagecreatefromjpeg($destinationPath); // 创建原始图片资源对象
$imageSize = getimagesize($destinationPath); // 获取图片的尺寸信息
$width = $imageSize[0]; // 图片原始宽度
$height = $imageSize[1]; // 图片原始高度
// 计算缩略图的尺寸,这里设定为最大宽度或高度为300像素,保持原图比例不变
if($width > $height){
$thumbWidth = 300;
$thumbHeight = $thumbWidth ($height/$width);
} else if($width < $height){
$thumbHeight = 300;
$thumbWidth = $thumbHeight ($width/$height);
} else {
$thumbWidth = 300;
$thumbHeight = 300;
}
// 创建空白画布用于画缩略图,尺寸就是我们计算出的缩略图尺寸
$thumbnailImage = imagecreatetruecolor($thumbWidth, $thumbHeight);
// 使用imagecopyresized函数将原始图片内容复制到缩略图画布上,同时调整大小以适应缩略图的尺寸
imagecopyresized($thumbnailImage, $originalImage, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $width, $height);
// 保存缩略图到文件系统中,文件名以s_开头,防止与原图混淆
$thumbnailPath = "uploads/s_" . $fileName;
imagejpeg($thumbnailImage, $thumbnailPath); // 保存缩略图为jpg格式的文件到指定路径下。此处使用的是GD库中的imagejpeg函数,可以将图像输出为JPEG格式的文件。这里可以根据实际需要调整输出的格式,例如输出为PNG格式的文件。具体取决于你如何保存图像的资源对象。在上面的代码中,我们使用imagecreatefromjpeg创建了一个JPEG格式的图像资源对象,因此我们使用imagejpeg函数将其保存为JPEG格式的文件。如果你使用其他函数创建图像资源对象(例如使用imagecreatefrompng创建PNG格式的图像资源对象),则需要相应地调整保存文件的函数(例如使用imagepng)。最后别忘了清理资源对象,释放内存。可以使用imagedestroy函数销毁图像资源对象。但在这个例子中我们省略了这一步,因为PHP会在脚本执行完毕后自动清理资源对象并释放内存。你可以根据实际情况决定是否手动清理资源对象。对于小型脚本来说,这可能并不是必要的。但是如果你在处理大型图像或大量图像时,手动清理资源对象可能会帮助提高性能和内存管理效率。当然你也可以根据实际需求对生成的缩略图进行进一步处理,比如添加水印等。希望这个例子能帮助你理解如何使用PHP的GD库生成缩略图。如果有任何疑问或需要进一步的帮助,请随时向我提问。
编程语言
- php生成缩略图示例代码分享(使用gd库实现)
- gridview和checkboxlist的嵌套相关应用
- composer.lock文件的作用
- Node.js操作mysql数据库增删改查
- window.close(); 关闭浏览器窗口js代码的总结介绍
- JQuery Ajax 异步操作之动态添加节点功能
- 使用Angular CLI生成路由的方法
- 在 Laravel 6 中缓存数据库查询结果的方法
- vue-cli 3 全局过滤器的实例代码详解
- 值得收藏的八个常用的js正则表达式
- 微信小程序实现折线图的示例代码
- 基于Javascript实现倒计时功能
- iis访问出现各种问题(Vs访问正常)的部分处理方法
- jQuery条件分页 代替离线查询(附代码)
- ajax 技术和原理分析
- 解析php中反射的应用