按照需要分别率长宽比导出图片(python 3)

效率提升的问题

之前朋友需要把大量的图片用分辨率进行区分查找,他说都是打开图片,然后用尺子在屏幕上量。。。。。。我也是瀑布汗。。。。花的点时间帮他写的小软件,解决这个蛋疼的问题

 

解决方案

本想用批处理解决,但是考虑到易用性,就用python的tkinter做了简单的界面方便操作。

他也不是程序开发人员,让他安装python环境并不现实,就需要用打包工具处理,网上看到很多用py2exe,看起来有点麻烦,我就直接用pyinstaller打包了,一行代码搞定。

 

源代码

 1 # -*- coding: utf-8 -*-
 2 import os
 3 from PIL import Image as pilImage
 4 from tkinter import *
 5 import tkinter.messagebox as messagebox
 6 import tkinter.filedialog as dialog
 7 
 8 class Application(Frame):
 9     def __init__(self, master=None):
10         Frame.__init__(self, master)
11         self.pack()
12         self.createWidgets()
13 
14     def createWidgets(self):
15         Label(self, text="输入地址:", font=("微软雅黑", 12), width=10, height=1).grid(row=0)
16         Label(self, text="输出地址:", font=("微软雅黑", 12), width=10, height=1).grid(row=1)
17         Label(self, text="长宽比:", font=("微软雅黑", 12), width=10, height=1).grid(row=2)
18         self.inInput = Entry(self)
19         self.outInput = Entry(self)
20         self.minInput = Entry(self,width=8)
21         Label(self, text="-", font=("微软雅黑", 12), width=1, height=1).grid(row=2,column=2)
22         self.maxInput = Entry(self,width=8)
23         self.inInput.grid(row=0,column=1,columnspan=3)
24         self.outInput.grid(row=1,column=1,columnspan=3)
25         self.minInput.grid(row=2,column=1)
26         self.maxInput.grid(row=2,column=3)
27 
28         self.minInput.insert(END,1)
29         self.maxInput.insert(END,1.1)
30 
31         self.inButton = Button(self, text='选择', command=self.openInDir)
32         self.outButton = Button(self, text='选择', command=self.openOutDir)
33         self.inButton.grid(row=0,column=5)
34         self.outButton.grid(row=1,column=5)
35 
36         self.excuteButton = Button(self, text='输出', command=self.export)
37         self.excuteButton.grid(row=2,column=5)
38 
39     def export(self):
40         in_path = self.inInput.get()
41         out_path = self.outInput.get()
42         excute_path = ''
43         excute_count = 0
44         files = os.listdir(in_path)
45         for file in files:
46             excute_path = in_path + '/' + file
47             im = pilImage.open(excute_path,'r')
48             if im.size[1]/im.size[0] >= float(self.minInput.get()) and im.size[1]/im.size[0] <= float(self.maxInput.get()):
49                 im.save(out_path + '/' + file, "PNG")
50                 print(out_path + '/' + file)
51                 excute_count = excute_count + 1
52         messagebox.showinfo('Message', excute_count)
53 
54     def openInDir(self):
55         self.inInput.delete(0,END)
56         self.inInput.insert(END,dialog.askdirectory())
57 
58     def openOutDir(self):
59         self.outInput.delete(0,END)
60         self.outInput.insert(END,dialog.askdirectory())
61 
62 app = Application()
63 app.master.title('图片处理')
64 app.mainloop()

 

其他相关

这里有直接打包好的exe问题 ----->  下载地址

 

运行截图:

posted @ 2016-04-07 14:36  玄猫大人  阅读(1924)  评论(0编辑  收藏  举报