PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
2023-06-13 09:15:28 时间
还是老规矩,直接上代码
<?php /** *缩略图生成类,使用示例: */ $newimage=newImageResize(); $newimage->resize("tu.jpg","tu_lit.jpg",1000,1000); echo$newimage->GetLastError(); classImageResize{ private$localimage;//原图路径 private$remoteimage;//缩略图保存路径 private$localinfo;//原图属性 private$error; functionresize($localimg,$remoteimg,$x,$y){ //检测是否支持gd图像处理 if(!$this->_checkenv()){ returnfalse; } $this->localimage=$localimg; $this->remoteimage=$remoteimg; $this->localinfo=getimagesize($this->localimage);//获取本地图像的信息 return$this->_resize($x,$y); } /** *检测当前环境是否支持GD */ privatefunction_checkenv(){ if(!function_exists("gd_info")){ $this->error[]="当前环境不支持GD图像处理,请先安装GD库并开启PHP相关扩展"; returnfalse; } returntrue; } /** *生成缩略图主函数 *@paramint$x指定的缩略图宽度 *@paramint$y指定的缩略图高度 *@returnboolean */ privatefunction_resize($x,$y){ if(!$this->localinfo){ $this->error[]="本地图像文件不存在"; returnfalse; } //创建图像句柄 $im=@$this->_create($this->localinfo[2]); if(!$im){ $this->error[]="当前GD库不支持图像类型:{$this->localinfo["mime"]}"; returnfalse; } $dstsize=$this->_dstsize($x,$y); $dstim=@imagecreatetruecolor($dstsize["width"],$dstsize["height"]); $whitecolor=@imagecolorallocatealpha($dstim,0,0,0,127); imagefill($dstim,0,0,$whitecolor); $re=@imagecopyresampled($dstim,$im,0,0,0,0,$dstsize["width"],$dstsize["height"],$this->localinfo[0],$this->localinfo[1]); if(!$re){ $this->error[]="图像重新采样失败"; returnfalse; } if(!imagejpeg($dstim,$this->remoteimage)){ if(!imagepng($dstim,$this->remoteimage)){ if(!imagegif($dstim,$this->remoteimage)){ $this->error[]="保存缩略图到{$this->remoteimage}失败,请检查gd环境是否正常和缩略图文件夹的写入权限。"; returnfalse; } } } $this->error[]="success"; returntrue; } /** *根据本地图片类型,创建图片资源 *@param图像类型代码$code *@returnresource/boolean成功则返回resourse失败则返回false */ privatefunction_create($code){ $src=$this->localimage; switch($code){ case1: returnimagecreatefromgif($src); break; case2: returnimagecreatefromjpeg($src); break; case3: returnimagecreatefrompng($src); break; default: returnfalse; break; } } /** *按比例计算合适的宽度 *@paramint$x指定的缩略图宽度 *@paramint$y指定的缩略图高度 *@returnarray包含调整后的缩略图宽度和高度 */ privatefunction_dstsize($x,$y){ list($srcwidth,$srcheight)=$this->localinfo; if(($srcwidth/$srcheight)<($x/$y)){ $x=floor($y*$srcwidth/$srcheight); }else{ $y=floor($x*$srcheight/$srcwidth); } $dstsize["width"]=$x; $dstsize["height"]=$y; return$dstsize; } /** *获取最后一条错误信息 *returnstring */ functionGetLastError(){ returnarray_pop($this->error); } /** *获取所有错误信息 *returnarray */ functionGetAllError(){ return$this->error; } }
相关文章
- PHP对接chatGPT代码,openai接口对接,php 实现chatGPT功能
- SEO超级外链工具【PHP】
- 如何使用PHP连接MySQL数据库(php如何关联mysql)
- Linux升级PHP:一步一步操作指南(linux怎么升级php)
- 基于MySQL的PHP留言板系统开发(php留言板mysql)
- PHP如何使用Redis连接: 代码实例(php连接redis代码)
- PHP如何关闭MySQL数据库连接(php关闭mysql连接)
- 基于PHP的Redis视频教程(redis视频教程php)
- 从PHP中解锁MSSQL的精彩!(php连mssql类)
- 基于PHP和MSSQL的连接设置(php mssql设置)
- 基于PHP和MSSQL 的网站用户注册系统(php mssql 注册)
- 缓存技术的实践基于 Redis 与 PHP 的实现(标签 redis php)
- 基于Oracle和PHP的新一代组件全面上线(oracle php组件)
- php防攻击代码升级版
- php下连接mssql2005的代码
- 防止用户利用PHP代码DOS造成用光网络带宽
- 基于PHP+Jquery制作的可编辑的表格的代码
- php在文件指定行中写入代码的方法
- php生成略缩图代码
- php写的带缓存数据功能的mysqli类
- PHP漏洞全解(详细介绍)
- php获取本地IP代码
- php中如何同时使用session和cookie来保存用户登录信息
- PHP中对各种加密算法、Hash算法的速度测试对比代码
- php与flashas3socket通信传送文件实现代码