提供图片压缩、自动上传到阿里云oss的脚本
会将origin_file_name文件自动转换为webp,并存储到origin_file_name的文件夹
python3 image_convert.py --path <origin_file_name>
python3 image_convert.py --format avif --resize 1200 --oss_folder <oss_folder_name> --path <origin_file_name>
- --format,目标格式,默认webp,支持webp、avif、heic、heif,其实支持各种格式,我懒得写。 如果图片本身已经是webp、avif、heic、heif,将不做转换
- --resize,最小尺寸,取图片长宽,并自动压缩到resize的值,如不传入,将不做压缩
- --path,原始文件路径,如果传的是文件夹,将会遍历文件夹下的所有图片并全部压缩。注意:不会遍历子目录
- --oss_folder,指定上传的阿里云oss路径,不传这个参数,将不会上传oss,注意:oss的bucket已经在脚本里指定了,你可以自己修改脚本
另外,imagemagic本身支持大量的压缩优化定义,可以参考:https://b.alnk.top/2016-03-23_imagemagick_compress_image/
pip使用到了Pillow和filetype
pip3 install Pillow
pip3 install filetype
使用到了ImageMagic:https://imagemagick.org/script/download.php
brew install ghostscript
brew install imagemagick
如果你需要上传到oss,你需要安装工具,并将参数替换到本脚本里
命令行工具:https://help.aliyun.com/document_detail/120075.html
目标命令类似于:
echo y | /usr/local/bin/ossutil64 -c /opt/local/oss/config-alnk cp -r /tmp/imagemagic/mydoc/image_4.avif oss://my_bucket/mydoc/
上面的命令拆解后,参数如下:
"""
oss的bucket
"""
env_oss_bucket="my_bucket"
"""
oss上传时的路径
"""
env_oss_upload_path=f"oss://{env_oss_bucket}/"
"""
oss的公网域名
"""
env_oss_full_path=f"https://{env_oss_bucket}.oss-cn-hangzhou.aliyuncs.com/"
"""
oss命令的完整路径和配置文件所在地
"""
env_oss_shell="/usr/local/bin/ossutil64"
"""
oss需要读取密钥,请将密钥存储到你指定的目录
"""
env_oss_shell_config="/opt/local/oss/config-file"