您现在的位置是:首页 > 教程 > pbootcms教程pbootcms教程
pbootcms压缩图片上传优化方法
幻柏2024-12-11 21:30:32pbootcms教程已有人查阅
导读最近在用PbootCMS给客户优化一个功能,原因是这样的:使用PbootCMS给客户做了一个报名系统,需要上传大量的身份证照片,差不多在10万张左右,就会造成服务器内存空间占用量很大
最近在用PbootCMS给客户优化一个功能,原因是这样的:使用PbootCMS给客户做了一个报名系统,需要上传大量的身份证照片,差不多在10万张左右,就会造成服务器内存空间占用量很大,现在优化一个图片压缩的功能。
首先找到PbootCMS的图片上传方法:
位置:admin \ controller \ IndexController.php
具体的upload方法:
增加一个等比压缩图片的方法:compressedImage
具体方法示例:
首先找到PbootCMS的图片上传方法:
位置:admin \ controller \ IndexController.php
具体的upload方法:
增加一个等比压缩图片的方法:compressedImage
具体方法示例:
/**
* desription 压缩图片
* @param string $imgsrc 图片路径
* @param string $imgdst 压缩后保存路径,从项目根目录开始的路径(为空则输出图片)
* @param string $imgwidth 等比压缩图片 图片的宽度
*/
public function compressedImage($imgsrc, $imgdst ,$imgwidth = 800)
{
list($width, $height, $type) = getimagesize($imgsrc);
$newWidth = $width > 800 ? 800 : $width; //图片宽度的限制
$newHeight = $height > 800 ? ceil($height * 800 / $width) : $height; //自适应匹配图片高度
switch ($type) {
case 1:
#先判断是否为gif动画
$fp = fopen($imgsrc, 'rb');
$image_head = fread($fp, 1024);
fclose($fp);
$giftype = preg_match("/" . chr(0x21) . chr(0xff) . chr(0x0b) . 'NETSCAPE2.0' . "/", $image_head) ? false : true;
if ($giftype) {
header('Content-Type:image/gif');
$image_wp = imagecreatetruecolor($newWidth, $newHeight);
$image = imagecreatefromgif($imgsrc);
imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
//90代表的是质量、压缩图片容量大小
imagejpeg($image_wp, $imgdst, 90);
imagedestroy($image_wp);
imagedestroy($image);
}
break;
case 2:
header('Content-Type:image/jpeg');
$image_wp = imagecreatetruecolor($newWidth, $newHeight);
$image = imagecreatefromjpeg($imgsrc);
imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
//90代表的是质量、压缩图片容量大小
imagejpeg($image_wp, $imgdst, 90);
imagedestroy($image_wp);
imagedestroy($image);
break;
case 3:
header('Content-Type:image/png');
$image_wp = imagecreatetruecolor($newWidth, $newHeight);
$image = imagecreatefrompng($imgsrc);
imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
//90代表的是质量、压缩图片容量大小
imagejpeg($image_wp, $imgdst, 90);
imagedestroy($image_wp);
imagedestroy($image);
break;
}
}
此等比压缩方法,主要解决的问题是:现在客户上传的身份证照片是1920宽的照片,我们处理的思路是:按照原尺寸进行等比压缩处理。通过测试,能够将500kb左右的图片,压缩到60k左右。
本文标签:
很赞哦! ()
下一篇:pbootcms权限管理逻辑分析
相关文章
随机图文
-
pbootcms上传缩略图限制尺寸的方法
今天在帮客户建站的时候,不经意的发现上传了一张1920px的缩略图后,上传后实际只有1000px,后台找不到设置的地方。其实这个缩略图的限制是需要修改系统文件才可以。 -
pbootcms授权提示信息修改方法,pbootcms授权提示信息怎么改
其实官方已经预制了一个免费的解决方案,你只需要在网站根目录下新建一个sn.html文件,在里面写上你自己的提示信息,比如请联系XX,如果你正在访问此时为非授权域名。 -
pbootcms模板tag标签调用写法
pbootcms模板tag标签调用,1、内容页。2、全站tag调用。3、当前tag名称。4、tags.HTML调用列表 -
Pbootcms异常指南解决方法示例
问:后台正常,前台异常(404)答:域名没有授权。问:nginx伪静态2:轮播图不会轮播如果不会动,就吧下面这个加上
留言与评论 (共有 条评论) |