针对Discuz手机版上传原图过大的问题,可通过以下方案实现图片压缩:
1. **核心参数配置**
在Discuz后台「全局」→「上传设置」中:
- 调整`图片质量`参数(推荐75-85)
- 启用`是否缩放图片`并设置最大宽度(如1920px)
- 修改`图片尺寸限制`为合理值(如单张5MB)
2. 代码层优化方案
在source/class/class_image.php文件中扩展处理逻辑:
- // 添加压缩质量参数
- $quality = $_G['setting']['thumbquality'] ?: 75;
- // GD库处理示例
- if(function_exists('imagejpeg')) {
- imageinterlace($target, true); // 启用渐进式
- imagejpeg($target, $targetfile, $quality);
- }
- // Imagick处理示例
- $image->setImageCompressionQuality($quality);
- $image->setInterlaceScheme(Imagick::INTERLACE_PLANE);
复制代码
3. 移动端专项处理
在source/module/forum/forum_mobile.php中插入预处理:
- // 上传前检测
- if($_G['mobile'] && $file['size'] > 1024*1024*2) {
- $image = new image();
- $image->Thumb($file['tmp_name'], $file['tmp_name'], 0, 0, 1920, 1920);
- }
复制代码
4. 前端增强限制
在模板文件template/default/mobile/forum/post.htm中添加:
- <input type="file" accept="image/*" onchange="checkSize(this)">
- <script>
- function checkSize(input) {
- if(input.files[0].size > 2097152) {
- alert('图片需小于2MB');
- input.value = '';
- }
- }
- </script>
复制代码
5. 进阶优化方案
- 启用WebP格式转换(需PHP5.5+)
- 配置CDN自动图片优化
- 使用EXIF自动旋转修正
注意事项:
1. 建议保留原图备份功能
2. 不同图片格式需区别处理(PNG/JPG/WEBP)
3. 压缩参数需根据实际效果平衡画质
4. 需确保服务器已安装GD/Imagick扩展
如需更完善的解决方案,可访问DZ插件网查阅《移动端上传优化方案》技术文档,该方案支持智能压缩、格式转换等高级功能。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |