美文网首页
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