Python使用tinypng的API压缩图片
1.前言
1.1 为啥要搞这个压缩图片
纯粹是为了玩
1.2 tinypng 就是一个高质量压缩的图片网站
2.效果
图片压缩过程 压缩后的图片 批量压缩后的效果3.使用
3.1 安装tinify
- 安装
pip
sudo easy_install pip
- 使用
pip
进行安装tinify
pip install --upgrade tinify
如果出现下面错误
Permission denied: '/Library/Python/2.7/site-packages/idna'
执行
sudo pip install --upgrade
如果想调用TinyPNG的API,需要先在他们的网站 TinyPNG Developer上申请一个API KEY用于身份验证。
当验证了API KEYy之后,可以通过tinify.compression_count
查看当月的API调用次数。每个月有500次的使用次数。
3.2 使用PyCharm安装tinify库
tinify库上传文件:
文件上传的形式共有三种:本地文件、二进制、URL。
上传文件后,服务器会自动识别文件类型,根据类型自动调用TinyPNG或TinyJPG的压缩引擎。调用to_file函数就可以将压缩优化过后的图片保存至本地。
实例代码:
# 使用本地文件上传
source = tinify.from_file("unoptimized.jpg")
source.to_file("optimized.jpg")
# 使用二进制上传
with open("unoptimized.jpg", 'rb') as source:
source_data = source.read()
result_data = tinify.from_buffer(source_data).to_buffer()
# 使用url上传
source = tinify.from_url("https://cdn.tinypng.com/images/panda-happy.png")
source.to_file("optimized.jpg")
3.3.重点代码
import tinify
//
tinifyAPi = tinify.tinify
def compress_online(sourcefile, outputfile):
tinify.key = "Your Developer API Key"
source = tinifyAPi.from_file(sourcefile)
source.to_file(outputfile)
print('压缩图片...' + outputfile)
# 遍历文件 fromPath 来源路径
for root, dirs, files in os.walk(fromPath):
for name in files:
newFromFilePath = os.path.join(root, name)
newToFilePath = os.path.join(newToPath, name)
fileName, fileSuffix = os.path.splitext(name) # 分解文件名的扩展名
if fileSuffix == '.png' or fileSuffix == '.jpg':
# source = tinify.from_file(newFromFilePath)
# source.to_file(newToFilePath)
# 在线压缩
if not compress_online(newFromFilePath, newToFilePath):
print("压缩失败,检查报错信息")
exit()
pass
else:
pass
详细代码查看:
Python使用tinypng的API压缩图片 github 地址
网友评论