使用TinyPNG API压缩图片

article/2025/9/9 22:02:15

使用TinyPNG API压缩图片

在撰写论文的时候,美观,大气,上档次的图标能够很好地给自己的论文加分,好的可视化结果也能够让审稿人赏心悦目。但是有时候在可视化图片的时候有可能原始图像过大从而很占内存;这时候就希望能够是有一个无损压缩工具来压缩图像。目前笔者尝试过TinyPNG 感觉能够达到较好的压缩效果而且基本上不影响视觉效果。而且也有对应的安装包TinyGUI, TinyGUI 是网友根据TinyPNG提供的应用程序接口开发的本地桌面端工具。它具有以下特点:

  • 无单张图片最大5M的限制
  • 无压缩图片数量限制
  • 免费且使用简单,图片拖放到界面就可以压缩

桌面端使用教程

  1. TinyGUI需要用到TinyPNG的API,这里先打开Developer API,填入用户名和邮箱,然后点击“Get Your API key”。当页面显示“We have sent you an email with a link to your API key!” 就可以到邮箱找到收到的API key了。
    在这里插入图片描述
  2. 打开TinyGUI,在“设置你的 API Key”下框中输入刚收到的API(有可能在垃圾箱里),再选择保存。
    在这里插入图片描述
  3. 选择“选择图片文件”上传需要压缩的图片,或者直接拖拽图片到“将图片拖动到此处”区域
    在这里插入图片描述
  4. 然后就可以开始等待图片压缩了,可以看到TinyPNG可以将1.5MB的图片压缩到637.4KB,压缩了57%,非常不错。
    在这里插入图片描述

但是又到了但是环节。
本地桌面端工具用起来虽然比较方便,但是当图片比较多,或者图片存在多个文件夹下时就没那么方便了,作为一名程序猿 这时候当然想到的是用python来写一份调用API遍历文件夹的程序咯。

Python调用TinyPNG API 遍历文件夹压缩图片

同样的也需要使用上面的第一步来获取API key

# -*- coding:utf-8 -*-
# 使用tinypng API压缩项目图片
import tinify
import os
import time
from os.path import join, getsize
import math# 压缩图片的key
online_key_list = ["FCBMvlXLZzGKxwLBQ0CCl4hyrpLMWKt*","FCBMvlXLZzGKxwLBQ0CCl4hyrpLMWKt*",  # 可以继续添加  防止一个key不够
]# 获取key
online_key_list_iter = iter(online_key_list)
online_key = next(online_key_list_iter)
tinifyAPi = tinify.tinifydef size_format(size, dot=2):## 文件大小 单位转化if 1 <= size < 1024:human_size = str(round(size, dot)) + 'B'# 千字节 千字节 Kilo Byteelif math.pow(1024, 1) <= size < math.pow(1024, 2):human_size = str(round(size / math.pow(1024, 1), dot)) + 'KB'# 兆字节 兆 Mega Byteelif math.pow(1024, 2) <= size < math.pow(1024, 3):human_size = str(round(size / math.pow(1024, 2), dot)) + 'MB'# 吉字节 吉 Giga Byteelif math.pow(1024, 3) <= size < math.pow(1024, 4):human_size = str(round(size / math.pow(1024, 3), dot)) + 'GB'# 太字节 太 Tera Byteelif math.pow(1024, 4) <= size < math.pow(1024, 5):human_size = str(round(size / math.pow(1024, 4), dot)) + 'TB'return human_size# 在线压缩
def compress_online(sourcefile):global online_keycompresskey = online_keytinify.key = compresskeyrs = Falseoutputfile = sourcefileold_size = getsize(sourcefile)try:source = tinifyAPi.from_file(sourcefile)source.to_file(outputfile)new_size = getsize(outputfile)sub_size = old_size - new_sizeprint('保存路径:{} | 压缩前文件大小:{}; 压缩后文件大小:{}; 压缩比例:{:.2}%'.format(outputfile, size_format(old_size),size_format(new_size), sub_size / new_size * 100))rs = Truepassexcept tinify.AccountError:# Verify your API key and account limit.# 如果key值无效 换一个key继续压缩print("key值无效 换一个继续。。。")online_key = next(online_key_list_iter)compress_online(sourcefile)  # 递归方法 继续读取rs = Trueexcept tinify.ClientError:# Check your source image and request options.print("Check your source image and request options.")rs = Falsepassexcept tinify.ServerError:# Temporary issue with the Tinify API.# print("Temporary issue with the Tinify API. %s" % e.message)print("Temporary issue with the Tinify API.")rs = Falsepassexcept tinify.ConnectionError:# A network connection error occurred.print("网络故障。。。休息1秒继续")time.sleep(1)compress_online(sourcefile)  # 递归方法 继续读取rs = Truepassexcept Exception:# Something else went wrong, unrelated to the Tinify API.print("Something else went wrong, unrelated to the Tinify API.")rs = Falsepassreturn rsdef fileofdir_iterate(path):folderlist = os.listdir(path)  # 列举文件夹folderlist.sort()for item in folderlist:item_name = os.path.join(path, item)if os.path.isfile(item_name):compress_online(item_name)else:fileofdir_iterate(item_name)if __name__ == '__main__':dir_path = r"D:\Desktop\fig\figures\examples\GF2"fileofdir_iterate(dir_path)

上面的程序参考了:https://github.com/haoma2012/PythonProject/blob/master/ComPressPic.py。
这里作者直接把压缩后的图片替换了原始的图片,可以根据自己的需求来调整输出结果的存放位置。
以上便是本次分享。

如有疑问可联系:2458707789@qq.com; 备注 姓名+学校


http://chatgpt.dhexx.cn/article/6pYb0wma.shtml

相关文章

FME读写cass数据的方案及操作流程

FME读写cass数据的方案及操作流程 一。CASS数据转换&#xff08;一&#xff09;读取南方CASS数据 南方CASS数据采用AutoCAD的DWG、DXF文件方式进行存储&#xff0c;用FME可以直接对DWG\DXF文件进行读取&#xff0c;但FME不能识别CASS扩展属性信息。在FME WorkBench中无法看到CA…

FME性能调整

FME性能调整 原文地址&#xff1a; https://knowledge.safe.com/content/kbentry/579/performance-tuning-fme.html 一、要素缓存 要素缓存&#xff08;或在FME2017及以下版本中使用“全部检查运行”—Run with Full Inspection&#xff09;允许你存储转换的中间结果并进行检…

【FME EXCEL】FME玩转EXCEL小记——不定期更新

目录 前言 本文记述FME使用过程中&#xff0c;对EXCEL操控心得&#xff0c;皆为平时的有感而发&#xff0c;故会不定时的更新。 模版的定义与使用 有如下一份成绩表&#xff0c;先存在两个问题&#xff0c;一个是所有同学的成绩少加了5分&#xff0c;另一个是登记表的位置不…

FME2019试用过程

FME2019试用过程 FME2019安装过程安装FME License安装FME Desktop FME2019安装过程 安装FME License AMPED —— 是 License 软件&#xff0c;先进入安这个 双击运行 一路安装 安完以后会弹出一个 hostid 的文本文件&#xff0c;如果没有去License的安装目录找 计算机名 网卡…

【FME小计】关于用户参数的设置

工作的时候遇到用户参数相关的需求&#xff1a;用户选择特定年份的时候&#xff0c;就运行特定年份数据。 该项需求的实现有两种方案&#xff1a; 使用Choice with Alias&#xff08;带别名的选择&#xff09;&#xff0c;然后将该参数关联到数据表上&#xff08;Feature to Re…

FME数据处理04:面自相交拓扑检查

在ArcGIS中仅提供了线要素的自相交拓扑检查,并未找到关于面要素自相交的相关表述;本文结合FME2019。列举了几种面自相交的情形,并介绍了FME中三个转换器及其设置方法。 关于ArcEngine的拓扑检查接口,可以参见基于C#的ArcEngine二次开发22:要素拓扑检查_小薛引路的博客-CS…

FME数据处理03:合并相接的线要素

1 问题描述 给定如下数据集: 上图中,选中的三条线段满足相接关系,但是是断开的;我们想将它们在断点处合并起来。 2 FME流程 主要是读取shp文件,调用LineCombiner转换器,将各线段从线段的相接点处连接起来。 Takes lines and connects them to form longer lines. Each…

FME动态转换

FME动态转换 什么是动态转换创建动态转换动态读模块动态写模块 动态结构处理动态结构动态要素类型动态属性结构几何定义 B站视频凑合看&#xff1a; 创建动态转换 结构处理(要素&#xff0c;属性&#xff0c;几何类型) 什么是动态转换 大多数转换要考虑源数据的结构&#xff…

FME助力新型基础测绘之存量测绘成果数据转换地理实体

​ 目前&#xff0c;新型基础测绘建设正在如火如荼地进行中&#xff0c;它是对传统基础测绘业务的转型升级&#xff0c;是测绘地理信息服务的发展方向和基本模式。要想充分了解新型基础测绘建设的核心内容&#xff0c;地理实体是必不可少的一个关键要素。 地理实体是指现实世…

使用FME 批量OSGB转FBX(OBJ) (亲测)

首先感谢这个UP主&#xff08;这种好视频&#xff0c;必须支持&#xff09;&#xff1a;OSGB单体模型批量转FBX&#xff0c;并保留原有文件目录_哔哩哔哩_bilibili 视频地址&#xff1a;链接&#xff1a;https://pan.baidu.com/s/18JCTpgAhWT1l5x8zJW9q0A?pwdr25e 提取码&am…

FME自动实现CAD转PDF的几种方式——以标准房屋建筑面积测算表为例

买房 对许多人来说都是人生大事之一&#xff0c; 关乎着定居、关乎着家庭、关乎着人生的再进一步。 要说买房以后最期待的事情是什么&#xff1f; ——拥有红本本&#xff0c;肯定是最重要的一项。 细心的你不难发现&#xff0c;房本除了房屋信息、房主信息以外还包含房屋平…

FME在变更地类流向统计中的应用

“国土变更调查”是全面查清我国土地利用状况&#xff0c;掌握详实准确的土地基础数据&#xff0c;摸清家底&#xff0c;提高土地资源的信息化管理和社会化运用&#xff0c;保障我国国民经济平稳健康发展&#xff0c;以及促进国土资源的合理开发和可持续利用的一项年度工作。 …

基于FME实现不动产数据一键导出自然资源部汇交格式

基于FME实现不动产数据一键导出 自然资源部汇交格式 自2015年中华人民共和国国务院令第656号签《不动产登记条例施行》施行。各省市区县在2017年相继成立不动产登记机构&#xff0c;整合原有国土部门土地登记。房管部门房产登记&#xff0c;林业部门的林业登记&#xff0c;实…

安装 FME Desktop 2020 教程(内置补丁可以有效激活软件)

介绍&#xff1a;FME Desktop 2020是由加拿大Safe Software公司开发的空间数据转换处理系统&#xff0c;采用先进的数据转换技术&#xff0c;内置几十个转换器&#xff0c;能够满足绝大部分用户的空间数据格式转换功能。除此之外&#xff0c;该软件基于OpenGIS组织提出的新的数…

利用FME PythonCaller调用7z解压压缩包

利用FME PythonCaller调用7z解压压缩包 一、概述 在一些项目中有时候需要对文件目录完整性进行检查&#xff0c;而需要检查的数据又是压缩包的形式。我们都知道FME可以直接读取压缩包里的文件&#xff0c;当通过FME FeatureReader转换器去读取路径时&#xff0c;发现压缩包里面…

FME2020安装

1、先安装fme-flexnet-win-x64.msi 弹出txt后修改dummy.txt 修改后的dummy.txt 计算机名 ID 双击"makekey.bat" 生成safe.lic 2、安装fme-desktop-2020.0-b20200-win-x64.msi 3、将safe.lic拷贝到C:\Program Files\FlexServer\下 4、激活下

基于FME实现地铁路径规划

在建设智慧城市的背景下&#xff0c;智慧交通、智慧出行等建设在近几年日常生产、生活中占比逐渐加大。 路径规划是智慧交通、智慧出行建设过程当中较重要的专题分类。不管是百度、高德等公共服务平台&#xff0c;亦或是地方政府部门都在大力推动导航发展。路径规划作为数据导…

安装FME

一、FME软件获取 在 FME中国官方下载选择合适的版本&#xff0c;演示安装的是32位“FME Desktop 2022.2 for Windows”版本。 二、手动安装 1、安装“SafeFLEXlmInstaller” 2、安装“FME_Ddesktop” 3、安装“中文包” 4、官方许可 点击免费试用&#xff0c;申请官方许可。…

以分割栅格为例实现FME模板的方案优化

一、利用FME分割栅格 &#xff08;一&#xff09;问题的产生 对于FME使用者来说&#xff0c;利用FME完成栅格的批量分割是一件极为平常且容易的事情。只需要输入栅格和确定分割方案就可以实现利用FME对栅格数据的分割&#xff0c;再配合FME的“扇出”功能&#xff0c;就能够实…

FME在测量平差上面的运用

一、基本原理 测量平差是德国数学家高斯于1821&#xff5e;1823年在汉诺威弧度测量的三角网平差中首次应用&#xff0c;以后经过许多科学家的不断完善&#xff0c;得到发展&#xff0c;测量平差已成为测绘学中很重要的、内容丰富的基础理论与数据处理技术之一。 图一 三角网平…