96897-zq6ophc3znc.png
【Typecho插件】MyUpload - 图片压缩上传插件,支持本地压缩和TinyPNG远程压缩。

本地压缩

要求拥有云主机的控制权,安装jpegoptim和pngquant本地压缩组件。

在CentOS 7.5系统中已经自带有jpegoptim和pngquant的安装包,直接执行安装命令:
yum install jpegoptim -y

yum install pngquant

补充资料:
JpegOptim是用于优化jpeg文件的实用程序。提供无损优化(基于优化霍夫曼表)和基于设置最大品质因数的“有损”优化。
通过运行SSH命令执行压缩:
jpegoptim --max=90 --preserve --all-progressive xxx.jpg
参数可以是传统的POSIX一个字母选项,也可以是。GNU风格长选项。 POSIX风格选项以一个“-”开头,而GNU的长选项以''--'开头。

-d<path>, --dest=<path> 设置备份目标目录,以便保存优化(默认是覆盖原始文件)。
-f, --force 强制优化,即使结果大于原始文件。
-m<quality>, --max=<quality> 设置最大图像质量因子(禁用无损优化)。
-n, --noaction 模拟优化(就是测试压缩比但不执行优化)。
-S<size>, --size=<size> 尝试优化文件大小(KB或百分比的原始文件大小)。
-o, --overwrite 覆盖目标文件
-p, --preserve 保存文件修改时间
--all-progressive 强制所有输出文件都是渐进的。
--strip-all 去除所有(Comment  & Exif)删除标记。

Pngquant是一款免费的开源和跨平台命令行PNG压缩器,它基于可移植的libimagequant库,用C99编写,通过将PNG图像转换为更高效的8位PNG格式并保留完整的Alpha透明度,它可以显着减小文件大小。8位PNG文件通常比24/32位PNG文件小60-80%,使用Pngquant压缩的图像与所有Web浏览器和操作系统完全兼容,Pngquant可以一次压缩一个或多个图像。

通过运行shell命令执行压缩:
pngquant --skip-if-larger --ext .png --force --quality=60-90 xxx.png

--force 强制覆盖现有的输出文件(短选项:-f)
--skip-if-larger 在压缩时仅保存小于原始的文件
--output file    输出文件目标文件路径,而不是--ext (短命令: -o)
--ext 设置输出文件名的自定义后缀/扩展名
--quality 设置图片颜色范围,值为0-100
--speed   设置速度和图片质量,速度越快质量越差。参数:1=slow, 3=default, 11=fast & rough
--nofs    禁止Floyd-Steinberg抖动

注意:由于本地压缩是执行一句shell命令运行的,在PHP中shell_exec函数运行,而默认PHP是禁止这个函数的,别忘了在配置中开启。


远程压缩

插件通过TinyPNG的API接口执行远程压缩后返回上传附件,须到官网https://tinypng.com/developers注册一个 API Key:
g9g6i6lzqh.png
注意:图片远程压缩速度可能很慢,请耐心等待(有可能超时导致压缩失败),要使用远程压缩在插件填入申请到的Key,使用本地压缩须把key内容清空。

g9eqejbo4l.gif
p.s. 测试过,本地压缩效果不是很大,而tinypng的压缩很强大,但每月只提供500张免费压缩。

插件下载 p.s.上传MyUpload目录到plugins目录下。

本文转载