PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > Fastadmin

问答社区添加图片格式并转换为webp格式

管理员 2024-12-14
Fastadmin
7

最近发现有用户上传了非常大的图片,如png和bmp。

所以对图片上传功能做了一些改动。

增加webp和avif格式的支持

--- a/fastadmin/addons/alioss/controller/Index.php+++ b/fastadmin/addons/alioss/controller/Index.php@@ -99,7 +99,7 @@ class Index extends Controller-            if (in_array($suffix, ['gif', 'jpg', 'jpeg', 'bmp', 'png', 'swf'])) {+            if (in_array($suffix, ['gif', 'jpg', 'jpeg', 'bmp', 'png', 'swf', 'webp', 'avif'])) {

自动压缩转换

原有上传保存逻辑不变,但在检查文件过大,且有压缩的可能的情况下。
自动再压缩一份新的webp格式,并上传到OSS。
这样原图 xx.png 也在,但默认网页上面展示的是 xx.png.webp

// 针对非动画文件,如果文件体积或图片尺寸过大,将转换为 webp 格式。if (in_array($suffix, ['jpg', 'jpeg', 'bmp', 'png'])){    $maxSize = 800;    if (($imagewidth > $maxSize) || ($fileInfo['size'] > 1024*100))    {        if($imagewidth > $maxSize){            $image = thinkImage::open($filePath);            $image->thumb($maxSize, $maxSize);            $image->save($filePath);        }        $webpName = $object . '.webp'; // URL相对路径        $webpFileName = ROOT_PATH . '/public/' . $webpName; // 本地绝对路径        $quality = 70; // 照片质量        // 转为webp        $result = imagewebp(imagecreatefromstring(file_get_contents($filePath)), $webpFileName, $quality);        if ($result) {            try {                $ossClient->uploadFile($config['bucket'], $webpName, $webpFileName);                $url = '/' . $webpName; // 更新对外展示URL                // remove            } catch (OssException $e) {                $this->error('webp上传失败');            }        }    }}

希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部