標籤:
效率提升的問題
之前朋友需要把大量的圖片用解析度進行區分尋找,他說都是開啟圖片,然後用尺子在螢幕上量。。。。。。我也是瀑布汗。。。。花的點時間幫他寫的小軟體,解決這個蛋疼的問題
解決方案
本想用批處理解決,但是考慮到易用性,就用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 = 044 files = os.listdir(in_path)45 for file in files:46 excute_path = in_path + ‘/‘ + file47 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 + 152 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問題 ----->
運行:
按照需要分別率長寬比匯出圖片(python 3)