php 缩略图类(附调用示例)
本文介绍下,php实现的一个缩略图类,支持加载图片文件与加载图片字符串,按比例拉伸等,代码后面有调用示例供参考。
分享个php缩略图类,可以实现如下的功能: 1,支持加载图片文件和加载图片字符串 2,可以将缩略图输出到浏览器和保持缩略图文件 3,支持gif,png,jpeg类型的缩略 4,可以设定是否按比例来拉伸代码如下: <?php /** * 生成缩略图(支持加载图片文件和字符串2种方式) * @param $maxWidth 缩略图最大宽度 * @param $maxHeight 缩略图最大高度 * @param bool $scale 是否按比例缩小,否则拉伸 * @param bool $inflate 是否放大以来填充缩略图 * @edit by bbs.it-home.org */ class Thumbnail { private $maxWidth; private $maxHeight; private $scale; private $inflate; private $types; private $imgLoaders; private $imgCreators; private $source; private $sourceWidth; private $sourceHeight; private $sourceMime; private $thumb; private $thumbWidth; private $thumbHeight; public function __construct($maxWidth, $maxHeight, $scale = true, $inflate = true) { $this->maxWidth = $maxWidth; $this->maxHeight = $maxHeight; $this->scale = $scale; $this->inflate = $inflate; $this->types = array( 'image/jpeg', 'image/png', 'image/gif' ); //加载MIME类型图像的函数名称 $this->imgLoaders = array( 'image/jpeg' => 'imagecreatefromjpeg', 'image/png' => 'imagecreatefrompng', 'image/gif' => 'imagecreatefromgif' ); //储存创建MIME类型图片的函数名称 $this->imgCreators = array( 'image/jpeg' => 'imagejpeg', 'image/png' => 'imagepng', 'image/gif' => 'imagegif' ); } /** * 文件方式加载图片 * @param string $image 源图片 * @return bool */ public function loadFile($image){ if(!$dims = @getimagesize($image)){ trigger_error("源图片不存在"); } if(in_array($dims['mime'], $this->types)){ $loader = $this->imgLoaders[$dims['mime']]; $this->source = $loader($image); $this->sourceWidth = $dims[0]; $this->sourceHeight = $dims[1]; $this->sourceMime = $dims['mime']; $this->initThumb(); return TRUE; }else{ trigger_error('不支持'.$dims['mime']."图片类型"); } } /** * 字符串方式加载图片 * @param string $image 字符串 * @param string $mime 图片类型 * @return type */ public function loadData($image,$mime){ if(in_array($mime, $this->types)){ if($this->source = @imagecreatefromstring($image)){ $this->sourceWidth = imagesx($this->source); $this->sourceHeight = imagesy($this->source); $this->sourceMime = $mime; $this->initThumb(); return TRUE; }else{ trigger_error("不能从字符串加载图片"); } }else{ trigger_error("不支持".$mime."图片格式"); } } /** * 生成缩略图 * @param string $file 文件名。如果不为空则储存为文件,否则直接输出到浏览器 */ public function buildThumb($file = null){ $creator = $this->imgCreators[$this->sourceMime]; if(isset($file)){ return $creator($this->thumb,$file); }else{ return $creator($this->thumb); } } /** * 处理缩放 */ public function initThumb(){ if($this->scale){ if($this->sourceWidth > $this->sourceHeight){ $this->thumbWidth = $this->maxWidth; $this->thumbHeight = floor($this->sourceHeight*($this->maxWidth/$this->sourceWidth)); }elseif($this->sourceWidth < $this->sourceHeight){ $this->thumbHeight = $this->maxHeight; $this->thumbWidth = floor($this->sourceWidth*($this->maxHeight/$this->sourceHeight)); }else{ $this->thumbWidth = $this->maxWidth; $this->thumbHeight = $this->maxHeight; } } $this->thumb = imagecreatetruecolor($this->thumbWidth, $this->thumbHeight); if($this->sourceWidth <= $this->maxWidth && $this->sourceHeight <= $this->maxHeight && $this->inflate == FALSE){ $this->thumb = $this->source; }else{ imagecopyresampled($this->thumb, $this->source, 0, 0, 0, 0, $this->thumbWidth, $this->thumbHeight, $this->sourceWidth, $this->sourceHeight); } } public function getMine(){ return $this->sourceMime; } public function getThumbWidth(){ return $this->thumbWidth; } public function getThumbHeight(){ return $this->thumbHeight; } } /** * 缩略图类调用示例(文件) */ $thumb = new Thumbnail(200, 200); $thumb->loadFile('wap.gif'); header('Content-Type:'.$thumb->getMine()); $thumb->buildThumb(); /** * 缩略图类调用示例(字符串) */ $thumb = new Thumbnail(200, 200); $image = file_get_contents('wap.gif'); $thumb->loadData($image, 'image/jpeg'); $thumb->buildThumb('wap_thumb.gif'); ?> 登录后复制 |
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
刺客信条阴影:贝壳谜语解决方案
2 周前
By DDD
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前
By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

使用PHP的cURL库发送JSON数据在PHP开发中,经常需要与外部API进行交互,其中一种常见的方式是使用cURL库发送POST�...
