前言

2014年,曾追过一部HBO自制喜剧美剧。

Tinypng 工作原理

Tinypng是一家提供WebP, PNG and JPEG 图像智能压缩服务的网站。

第1步 在Tinypng 获取 API Key

Tinypng Web端有单次20张和单个文件5M的限制,同时TinyPNG官方提供了API,API限制每月500张,基本能够满足个人日常使用。另外通过API调用的方式也可以节省我们的操作成本,不再需要通过浏览器在Web端手动上传和下载图像,能够提高效率,节省时间。

访问链接:https://tinypng.com/developers

相关知识:API 和 API key

API 全称是应用程序接口(英语:application programming interface),操作系统或程序库提供给应用程序调用使用的代码,其主要目的是让应用程序开发人员得以调用一组例程功能,而无须考虑其底层的源代码为何、或理解其内部工作机制的细节。

而 API key 用于识别正在调用 API 的调用方项目(如应用或网站)。

第2步 使用Python安装tinify库

Tinypng 提供的 Tinify API 允许我们压缩和优化WebP,JPEG和PNG图像。 它被设计为一个 REST 服务,可以和不同编程语言(如HTTP,Ruby,PHP)编写的客户端进行交互。

你可以通过安装 Python 包来安装 Tinify-python客户端:

1
pip install --upgrade tinify

源代码可在Github上找到。

第3步 tinify库入门

此处主要参考Tingpng官方文档进行编写,原本就写的很通俗易懂。

导入tinify库

1
import tinify

使用API key 认证

要使用 API,你必须提供你的 API 密钥。始终对你的 API 密钥保密!

1
2
// 此处填入你在Tinypng注册后获得的API KEY
tinify.key = "YOUR_API_KEY"

所有请求都将通过加密的HTTPS连接发出。

压缩图像

你可以将任何WebP,JPEG或PNG图像上传到Tinify API进行压缩,

图像文件上传的形式共有三种:本地文件、二进制、URL。上传文件后,服务器会自动识别文件类型,根据类型自动调用TinyPNG或TinyJPG的压缩引擎。调用to_file函数就可以将压缩优化过后的图像保存至本地。

选择一个本地文件作为源,并将其写入另一个文件。

1
2
source = tinify.from_file("unoptimized.webp")
source.to_file("optimized.webp")

也可以从缓冲区(带有二进制的字符串)上传图像并获取 压缩的图像数据。

1
2
3
with open("unoptimized.jpg", 'rb') as source:
source_data = source.read()
result_data = tinify.from_buffer(source_data).to_buffer()

你还可以提供图像的 URL,而不必上传它。

1
2
source = tinify.from_url("https://tinypng.com/images/panda-happy.png")
source.to_file("optimized.png")

(未完待更新)