/png-compress

基于 pngquant 的高质量 PNG 图片压缩功能

Primary LanguagePython

注:当前项目为 Serverless Devs 应用,由于应用中会存在需要初始化才可运行的变量(例如应用部署地区、服务名、函数名等等),所以不推荐直接 Clone 本仓库到本地进行部署或直接复制 s.yaml 使用,强烈推荐通过 s init 的方法或应用中心进行初始化,详情可参考部署 & 体验

png-compress 帮助文档

基于 pngquant 的高质量 PNG 图片压缩功能

前期准备

使用该项目,您需要有开通以下服务:

服务 备注
函数计算 需要创建函数处理核心业务逻辑

推荐您拥有以下的产品权限 / 策略:

服务/业务 权限 备注
函数计算 AliyunFCFullAccess 需要创建函数处理核心业务逻辑

您还需要注意:

当前应用目前只支持标准的 PNG 格式图片进行压缩。

免责声明:

本项目采用了 pngquant作为技术实现方案,以开源形式进行组件共享,具体的使用所需遵循的协议,请参考 pngquant 项目。

部署 & 体验

应用详情

当前应用仅支持 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 中进行反馈和交流。如果您想要加入我们的讨论组或者了解 FC 组件的最新动态,您可以通过以下渠道进行:

微信公众号:serverless 微信小助手:xiaojiangwh 钉钉交流群:33947367