使用tinypng对需要上传Gitee图床的图片进行压缩

使用tinypng对需要上传Gitee图床的图片进行压缩,第1张

使用tinypng对需要上传Gitee图床的图片进行压缩 目录
  • 背景
  • Tinypng简介
    • Tinypng使用
      • 手动上传图片
      • 使用API
  • 调用API自动上传超过1MB图片
    • 安装tinyfy
    • 自动上传脚本
  • 其他
背景

在使用Gitee作为图床时(使用Typora+gitee+坚果云实现文档同步 - 掘金 (juejin.cn)),当插入的图片大小超过1MB时,会无法正常显示,如下图:

这就很让人头痛,比较一劳永逸的办法是使用云存储服务作为图床(如七牛云,阿里云的存储服务),如果对图片清晰度要求不是很高时,也可以通过压缩图片大小,使其小于1MB,再上传至Gitee图床。


本文主要讲述使用Tinypng来压缩图片。


Tinypng简介

TinyPNG 使用智能有损压缩技术来减小 WEBP、JPEG 和 PNG 文件的文件大小。


通过有选择地减少图像中的颜色数量,存储数据所需的字节更少。


链接:TinyPNG – Compress WebP, PNG and JPEG images intelligently

Tinypng使用 手动上传图片

Tinypng可以手动单次上传20张图片(小于5MB)进行压缩处理,实测国内网络速度也相当可观!压缩完成后的图片名称与原图片一致,可以直接进行替换处理。


实测效果如下图,是比较符合我们预期的。


压缩完的图片(800KB)实际效果,还是很不错的。


使用API

在Tinypng网站可以找到Developer API标签页,在该标签页中输入自己的邮箱即可收到Tinypng提供的API KEY的访问链接,

下图即是Tinypng的API Dshboard,在这个页面我们可以看到自己的API Key,在脚本中使用需要使用该KEY进行身份校验。


同时,该页面也会显示免费额度的使用情况,每个邮箱用户每月有500张图片压缩使用额度。


我们的使用需求是超过1MB大小的图片进行压缩,因此这个额度足够我们使用了。


调用API自动上传超过1MB图片

我们可以自己编写python脚本通过调用API来实现图片的自动上传压缩。


API教程可以参考官方文档:TinyPNG – API Reference

安装tinyfy

我们可以使用以下命令安装tinify,可以在Github找到源代码。


pip install --upgrade tinify
自动上传脚本

我自己简单写了个脚本,运行该脚本时需传入图片路径,当图片大于1MB大小时,上传Tinypng进行压缩。


# python 2.7
import tinify
import os
import sys tinify.key = "xxxxxxxxxxxxxxxx" # API Dashboard中的API Key class Tinify(): def __init__(self):
self.path = ' '.join(sys.argv[1:]) def get_fileSize(self, filePath):
fsize = os.path.getsize(filePath)
fsize = fsize / float(1024 * 1024)
print 'fileSize is %s' % round(fsize, 2)
return round(fsize, 2) def get_tinify(self):
file_list = os.listdir(self.path)
for f in file_list:
if f.endswith('png') or f.endswith('webp') or f.endswith('jpeg') or f.endswith('jpg'):
complete_path = self.path + '\\' + f
print complete_path
if self.get_fileSize(complete_path) > 1: # 图片大小超过1MB时,进行压缩
source = tinify.from_file(complete_path)
source.to_file(complete_path)
print "%s compress successful." % f if __name__ == '__main__':
a = Tinify()
a.get_tinify()

示例

原文件夹:

运行脚本

运行后

可以看到超过1MB的图片已经进行了压缩。


其他

官方文档的教学中,可以压缩后直接上传Amazon S3Google Cloud Storage, Gitee应该也是可以的,有时间了查看下源代码看看如何直接上传Gitee.

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/589020.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存