美文网首页
Python实战(一):Python使用tinypng的API压

Python实战(一):Python使用tinypng的API压

作者: smart_yang | 来源:发表于2019-03-08 09:22 被阅读0次

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 地址

参考

相关文章

网友评论

      本文标题:Python实战(一):Python使用tinypng的API压

      本文链接:https://www.haomeiwen.com/subject/aqmiuqtx.html