今日得闲,去上野的国立西洋美术馆逛了一圈。看到了印象派的好多名作,塞尚的《桥》,莫奈的《雪中的阿让特伊》、《睡莲》,毕沙罗的《收获》,马丁的《花与泉水》··。

拍了好多照片,想回来跟妹子分享一下。无奈mac版本微信一发raw格式图片就卡。AppStore搜了一圈格式转换软件都要花钱,于是一气之下,自己写了个格式转换的小程序,做了个tkinter的GUI,分分钟就转好了。

这个小程序长这样:

可以选择多个图片文件,自动识别源文件格式,然后可以在下拉菜单选择目标文件格式,支持nef,jpg,png,bmp,tiff,gif。等会代码放出来,大家有需要的可以自己改一改,添加需要的格式。然后选择输出的目标路径,点击开始转换,就可以转换了。底下的文本框会显示转换进度。(这个UI设计得可谓是相当简陋。不过随手写的,我也懒得弄多好看,好用就行。)

展示一下效果:

好了,少啰嗦,下面上代码。大家也可以在我的github上直接下载imageconverter.py:

import os

import re

from tkinter import *

from tkinter.filedialog import askdirectory,askopenfilenames

from tkinter import ttk

import rawpy

import imageio

def converter(img,targetdirect,i,num):

t.insert('end', '第' + str(i) + '/' + num + '件' + img + ' Converting \n')

print(img,targetdirect)

if os.path.exists(targetdirect)==True:

pass

else:

try:

raw=rawpy.imread(img)

raw_post = raw.postprocess()

except:

pass

else:

imageio.imsave(targetdirect, raw_post)

t.insert('end', '第' + str(i) + '/' + num + '件' + img + ' Finish \n')

# 主转换程序

def massconvert():

print(imgs, targetpath, targettype)

num = str(len(imgs))

i = 1

for img in imgs:

img_name = os.path.basename(img)

sourcetype=str(re.findall(r'\.[^.\\/:*?"<>|\r\n]+$', img_name)[0])

targetdirect = targetpath + '/' +re.sub(sourcetype,'.'+targettype,img_name)

converter(img, targetdirect,i,num)

i = i + 1

t.insert('end', '全部完成')

#GUI

def gotarget(*args): # 处理事件,*args表示可变参数

global targettype

targettype=targetformatlist.get()

print(targetformatlist.get())

def selectsourceimgs(): #获取源文件

global imgs

imgs=askopenfilenames()

e1.insert(0,imgs)

print(sourcepath)

def selecttargetPath(): #设定目标文件夹

global targetpath

targetpath = askdirectory()

e2.insert(0,targetpath)

print(targetpath)

window = Tk() #建立窗口

window.title('Image Converter') #标题

window.geometry('400x400') #大小

var2 = StringVar()

var3=StringVar()

var2.set(('NEF','jpg','png','tiff','bmp','GIF')) #为变量设置值

var3.set(('NEF','jpg','png','tiff','bmp','GIF')) #为变量设置值

#select source

Label(window,text = "源图片:").grid(row = 0, column = 1)

sourcepath=StringVar()

e1=Entry(window, textvariable = sourcepath)

e1.grid(row = 0, column = 2)

Button(window, text = "选择文件", command = selectsourceimgs).grid(row = 0, column = 3)

#select target directory

Label(window,text = "目标路径:").grid(row = 1, column = 1)

targetpath=StringVar()

e2=Entry(window, textvariable = targetpath)

e2.grid(row = 1, column = 2)

Button(window, text = "选择路径", command = selecttargetPath).grid(row = 1, column = 3)

#targetformatlist

Label(window,text = "目标图片类型:").grid(row = 3, column = 1)

targetformatlist = ttk.Combobox(window, textvariable=var3) # 初始化

targetformatlist.bind("<>", gotarget) # 绑定事件,(下拉列表框被选中时,绑定go()函数)

targetformatlist['values'] = ('NEF','jpg','png','tiff','bmp','GIF') # 设置下拉列表的值

#大家有需要的,可以在这里添加自己需要用的格式

targetformatlist.grid(column=2, row=3) # 设置其在界面中出现的位置 column代表列 row 代表行

targetformatlist.current(0) # 设置下拉列表默认显示的值,0为 numberChosen['values'] 的下标值

#显示结果文本

t=Text(window,height=10,width=30,background = 'grey')

t.grid(row=6,column=2)

#开始转换按钮

Button(window, text = "开始转换", command = massconvert).grid(row = 3, column = 3)

#显示主窗口

window.mainloop()

好啦,谢谢大家的阅读。如果你喜欢我的文章,可以关注我的账号,后续还会有更多的更新。如果有什么建议,也欢迎在评论区留言,我会悉心听取。

python写文件格式转换程序_有趣的python小程序——图片格式转换相关推荐

  1. 如何用python写串口通信软件_如何用python写个串口通信的程序?

    展开全部 打开串口后启动一个线程来监听串口数据的进入,有数据时,就做数据的处理. 用python写串口通信e68a84e8a2ad32313133353236313431303231363533313 ...

  2. python写一个接口_如何用python写接口

    如何用python写接口?具体步骤如下: 1.实例化server 2.装饰器下面的函数变为一个接口 3.启动服务 开发工具和流程: python库:flask =>实例化server:serve ...

  3. python汇率的转换程序_如何实现python汇率转换代码

    对于刚刚入门python的学习者们,最头疼的莫过于基础的功能实现代码了,很多函数可以实现意义是一样的,今天小编教大家实例--实现python汇率转换代码. Python中的货币转换器 tkinter ...

  4. 用python写一个圣诞互换礼物的抽奖小程序

    目的 最近和朋友们想玩圣诞互换礼物,但是没找到可以抽奖的小程序,所以我决定自己写一个. 游戏规则:参加游戏的人需要随机抽取一个幸运儿送一个礼物,但是注意不要抽到自己,并且不要重复抽同一个人. 思路 准 ...

  5. python写文件格式转换程序_python实现txt文件格式转换为arff格式

    本文实例为大家分享了python实现txt文件格式转换为arff格式的具体代码,供大家参考,具体内容如下 将文件读取出来的时候默认都是字符型的,所以有转换出来有点问题,但是还是可以用的. 文件要求第一 ...

  6. 如何用python写数值运算_如何理解Python的数值运算?

    1 基本算术运算 1.1 使用规则 – Python解析器相当于一个简单的计算器 – Python解析器可以接受简单的算术表达式 – 运算符可以使加(+)减(-)乘(*)除(/) 1.2 实操理解 # ...

  7. python写文字方法_初学Python-简单的在图片上加文字

    场景 在用户运营中,拉新是第一步.我们产品打算先再小范围试验一下效果,不动用开发哥哥,自己制作邀请海报. 没错,就是最简单的,邀请领奖励活动. UI妹妹把海报模版做出来,邀请码根据用户ID自行填上. ...

  8. python写网页脚本_东拼西凑用python脚本登录web管理页面做巡检(实现)

    东拼西凑用python脚本登录web管理页面做巡检(实现) 发布时间:2020-06-06 12:26:40 来源:51CTO 阅读:489 参考博文https://www.cnblogs.com/s ...

  9. 用python写注册登录_如何用python 写注册,登录功能的测试

    2015-07-09 回答 有些网页需要你登录之后才可以访问,你需要提供账户和密码. 只要在发送http请求时,带上含有正常登陆的cookie就可以了. 1.首先我们要先了解cookie的工作原理. ...

  10. python写扫雷脚本_如何让Python实现自动扫雷

    @本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 文章目录 自动扫雷一般分为两种,一种是读取内存数据,而另一种是通过分析图片获得数据,并通过模拟鼠标操作,这里我用的是第二种方式. ...

最新文章

  1. python答题系统的代码_Python考试系统自动答题(教务处)
  2. mysql8 允许外网访问
  3. linux实用的脚本:xcall(同步执行命令)与xsync(同步文件目录)
  4. 文件夹没有安全选项-文件上传下载-路径访问被拒绝
  5. Merge k Sorted Lists leetcode java
  6. 如何使用 WinUSB 与 USB 设备 (USBDevice) 通信
  7. 高通:预计未来几年向苹果公司出售的芯片将减少
  8. 移动端设备管理平台 atx server2实践
  9. linux系统添加任务栏蓝牙图标,深度系统中(deepin os)如何使用蓝牙适配器
  10. 2023南京工业大学计算机考研信息汇总
  11. 米家扫地机器人静音模式在哪_贵了300块的米家扫地机器人1S 还是那个性价比神器吗?...
  12. [转贴][教学] 教你如何打飞机 ^_^
  13. 3DsMax导出插件编写(二)——常规SDK方法进行信息获取和保存文件
  14. 在积分系统中可以设置哪些获取积分方式
  15. 苏宁易购首页仿写代码-仅供参考# 话不多说,直接上代码,苏宁易购手机app网站首页,仅供参考
  16. 微软原版系统安装Win7篇
  17. Jetson Nano控制SIM7020 开关机
  18. Teamviewer控制安卓手机远程打卡实现
  19. DDD:领域驱动设计
  20. qmail 相关问题

热门文章

  1. 计算机论文题目_基于java的毕业设计题目_50例
  2. oracle追踪语句,SQL Monitor(oracle语句追踪工具)
  3. 戴尔dell电脑恢复出厂设置教程(BIOS恢复出厂设置,新版台式机)
  4. 倒计时 分秒 小程序 方法_微信小程序 倒计时
  5. 相机模型与坐标转换!
  6. Window10 X64 安装TWinCat3
  7. python编程语言可以做游戏吗_用Python编程可以制作掷骰子游戏吗
  8. Android实战之淘宝领券(三)
  9. Julia(编程语言)
  10. ocx注册以及检测(转)