https://github.com/anycodes/png-compress
基于 pngquant 的高质量 PNG 图片压缩功能
https://github.com/anycodes/png-compress
Last synced: 5 months ago
JSON representation
基于 pngquant 的高质量 PNG 图片压缩功能
- Host: GitHub
- URL: https://github.com/anycodes/png-compress
- Owner: anycodes
- Created: 2022-05-09T15:27:14.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2023-02-06T03:25:13.000Z (over 3 years ago)
- Last Synced: 2025-04-07T22:41:39.025Z (about 1 year ago)
- Language: Python
- Size: 188 KB
- Stars: 1
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
> 注:当前项目为 Serverless Devs 应用,由于应用中会存在需要初始化才可运行的变量(例如应用部署地区、服务名、函数名等等),所以**不推荐**直接 Clone 本仓库到本地进行部署或直接复制 s.yaml 使用,**强烈推荐**通过 `s init ` 的方法或应用中心进行初始化,详情可参考[部署 & 体验](#部署--体验) 。
# png-compress 帮助文档
基于 pngquant 的高质量 PNG 图片压缩功能
- [:smiley_cat: 代码](https://github.com/anycodes/png-compress)
## 前期准备
使用该项目,您需要有开通以下服务:
| 服务 | 备注 |
| --- | --- |
| 函数计算 | 需要创建函数处理核心业务逻辑 |
推荐您拥有以下的产品权限 / 策略:
| 服务/业务 | 权限 | 备注 |
| --- | --- | --- |
| 函数计算 | AliyunFCFullAccess | 需要创建函数处理核心业务逻辑 |
您还需要注意:
当前应用目前只支持标准的 PNG 格式图片进行压缩。
免责声明:
本项目采用了 [pngquant](https://pngquant.org/)作为技术实现方案,以开源形式进行组件共享,具体的使用所需遵循的协议,请参考 pngquant 项目。
## 部署 & 体验
- :fire: 通过 [Serverless 应用中心](https://fcnext.console.aliyun.com/applications/create?template=png-compress) ,
[](https://fcnext.console.aliyun.com/applications/create?template=png-compress) 该应用。
- 通过 [Serverless Devs Cli](https://www.serverless-devs.com/serverless-devs/install) 进行部署:
- [安装 Serverless Devs Cli 开发者工具](https://www.serverless-devs.com/serverless-devs/install) ,并进行[授权信息配置](https://docs.serverless-devs.com/fc/config) ;
- 初始化项目:`s init png-compress -d png-compress `
- 进入项目,并进行项目部署:`cd png-compress && s deploy - y`
## 应用详情
当前应用仅支持 PNG 图片的压缩,压缩效果如下:

## 使用文档
部署当前应用之后,可以通过返回的地址进行测试,也可以通过api进行调用。
# 返回的地址进行测试
只需要通过选择文件(需要选择 PNG 格式的图片),点击图片压缩即可看到压缩结果:

# 通过api进行调用
地址:`http://你的域名/compress`
参数:
```
Headers:
Content-type: application/json
Body:
image: 图片Base64后的字符串(base64后最大不可以超过5M)
min_quality: 质量区间,默认65
max_quality: 质量区间,默认80
speed: 压缩速度(默认3,最高10)
```
案例:
```
import requests
import base64
def getResult(imagePath):
with open(imagePath, 'rb') as f:
data = f.read()
image = str(base64.b64encode(data), encoding='utf-8')
data = json.dumps({"image": 'data:image/png;base64,'+image, "min_quality": "65", "max_quality": "80", "speed": "3"})
txt = requests.post("http://localhost:7291/compress", data=data,
headers={'Content-Type': 'application/json'})
return txt.content.decode("utf-8")
print(getResult("./test.png"))
```
## 开发者社区
您如果有关于错误的反馈或者未来的期待,您可以在 [Serverless Devs repo Issues](https://github.com/serverless-devs/serverless-devs/issues) 中进行反馈和交流。如果您想要加入我们的讨论组或者了解 FC 组件的最新动态,您可以通过以下渠道进行:
|
|
|
|
| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
微信公众号:`serverless` | 微信小助手:`xiaojiangwh` | 钉钉交流群:`33947367` |