支持png透明图片的php生成缩略图类分享
这篇文章主要分享了一个基于GD2图形库的PHP类,用于生成支持PNG透明图片的缩略图。对于需要处理图像,特别是需要生成缩略图的朋友来说,这无疑是一个非常有价值的资源。
让我们来了解一下这个类所依赖的核心功能——GD2图形库。GD2是一个强大的图形处理库,它为PHP开发者提供了丰富的图像操作功能。正是基于这个强大的库,我们才能轻松地生成高质量的缩略图。
在试用过程中,我发现了一些问题。首先是关于PNG图片的格式问题。使用此类生成缩略图时,PNG图片会被转换为JPG格式。虽然JPG格式在很多场景下都能满足需求,但如果我们希望保持图片的透明或半透明效果,就会遇到问题。因为JPG格式不支持透明或半透明效果,所以在生成的缩略图中,原本透明的部分可能会被填充为黑色背景。这对于需要保留图片透明效果的场景来说,显然是无法接受的。
我还发现代码语法相对老旧,可能不符合一些现代开发者的编码习惯。在这个版本的基础上,我对代码进行了一些简单的修改和优化。
针对上述问题,我进行了如下的改进:
1. 保留了PNG图片的格式,生成的缩略图仍为PNG格式,保持了透明或半透明效果。
2. 对代码进行了更新和优化,使其更符合现代PHP开发的标准和规范。
这个PHP类为我们提供了一个很好的起点,用于生成支持PNG透明图片的缩略图。通过简单的修改和优化,我们可以使其更好地适应现代开发的需求。希望这篇文章能对你有所帮助,如果你有任何疑问或需要进一步了解,欢迎随时与我联系。PHP生成缩略图类
这是一个用于生成缩略图的PHP类。它可以处理JPG、PNG和GIF格式的图片,并能根据需求调整缩略图的尺寸和是否进行裁剪。以下是该类的内容及其使用说明。
类定义:
```php
class ResizeImage {
private $type; // 图片类型
private $srcimg; // 源图片地址
private $dstimg; // 目标图片地址
private $im; // 临时创建的图片资源
private $width; // 实际图片宽度
private $height; // 实际图片高度
private $resize_width; // 目标宽度
private $resize_height; // 目标高度
private $cut; // 是否裁图
public function __construct($imgPath, $width, $height, $isCut, $savePath) {
$this->srcimg = $imgPath;
$this->resize_width = $width;
$this->resize_height = $height;
$this->cut = $isCut;
$this->type = strtolower(pathinfo($imgPath, PATHINFO_EXTENSION)); // 获取图片类型
$this->initi_img(); // 初始化图片资源
$this->dstimg = $savePath; // 设置目标图片地址
$this->width = imagesx($this->im); // 获取实际图片宽度
$this->height = imagesy($this->im); // 获取实际图片高度
$this->newimg(); // 生成缩略图
ImageDestroy($this->im); // 销毁图片资源
}
private function newimg() {
// 计算缩略图比例等参数并执行裁剪或缩放操作
// ...(此处省略具体实现代码,根据需求进行相应的图像处理操作)
// 最后保存图片到目标地址,根据图片类型使用imagepng或imagejpeg进行保存
}
private function initi_img() {
// 根据图片类型初始化图片资源,使用imagecreatefromjpeg、imagecreatefromgif或imagecreatefrompng等函数创建图片资源对象
// ...(此处省略具体实现代码)
}
// 设置目标图片地址(这里似乎有些冗余,可以直接在构造函数中完成)
public function dst_img($dstpath) {
$this->dstimg = $dstpath;
}
}
?>
``` 类的使用说明: 创建一个新的`ResizeImage`对象时,需要提供源图片地址、目标宽度、目标高度、是否裁剪以及保存路径作为参数。类的构造函数会自动处理图片的初始化、缩放或裁剪操作,并保存结果到指定的路径。下面是使用示例: ```php include "ResizeImage.php"; ```php // 针对JPG图片 `$jpgResize = new ResizeImage("img/test_1920_1200.jpg", 320, 240, false, "img/test_320_240.jpg"); // 针对PNG图片 `$pngResize = new ResizeImage("img/test_1024_746.png", 320, 240, false, "img/test_320_240.png"); ``` 效果: 通过上述代码,你可以将指定的源图片缩放到指定的宽度和高度,并保存到指定的路径。如果不需要裁剪,则图像将按比例缩放;如果需要裁剪,则图像将按照指定的尺寸进行裁剪并保存。注意:上述代码中的部分实现细节被省略了,你需要根据实际需求补充完整。例如,你需要根据图片的原始比例和目标尺寸来确定如何进行裁剪或缩放操作。对于不同类型的图片(如PNG),可能需要特殊处理以确保图像质量不受损失。
编程语言
- 支持png透明图片的php生成缩略图类分享
- Ajax 上传图片并预览的简单实现
- AngularJS 实现点击按钮获取验证码功能实例代码
- Nodejs+Socket.io实现通讯实例代码
- PHP利用二叉堆实现TopK-算法的方法详解
- 如何做一个密码“生成器”?
- php微信公众号开发(2)百度BAE搭建和数据库使用
- Asp.Mvc 2.0实现用户登录与注销功能实例讲解(2)
- Asp.net管理信息系统中数据统计功能的实现方法
- JavaScript中的跨浏览器事件操作的基本方法整理
- 第一次接触神奇的Bootstrap菜单和导航
- Vue路由模块化配置的完整步骤
- 微信小程序三级联动地址选择器的实例代码
- Zend Framework教程之路由功能Zend_Controller_Router详解
- Underscore.js 1.3.3 中文注释翻译说明
- JS+html5 canvas实现的简单绘制折线图效果示例