按照需要分别率长宽比导出图片(python 3)
效率提升的问题
之前朋友需要把大量的图片用分辨率进行区分查找,他说都是打开图片,然后用尺子在屏幕上量。。。。。。我也是瀑布汗。。。。花的点时间帮他写的小软件,解决这个蛋疼的问题
解决方案
本想用批处理解决,但是考虑到易用性,就用python的tkinter做了简单的界面方便操作。
他也不是程序开发人员,让他安装python环境并不现实,就需要用打包工具处理,网上看到很多用py2exe,看起来有点麻烦,我就直接用pyinstaller打包了,一行代码搞定。
源代码
# -*- coding: utf-8 -*-
import os
from PIL import Image as pilImage
from tkinter import *
import tkinter.messagebox as messagebox
import tkinter.filedialog as dialog class Application(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
self.createWidgets() def createWidgets(self):
Label(self, text="输入地址:", font=("微软雅黑", 12), width=10, height=1).grid(row=0)
Label(self, text="输出地址:", font=("微软雅黑", 12), width=10, height=1).grid(row=1)
Label(self, text="长宽比:", font=("微软雅黑", 12), width=10, height=1).grid(row=2)
self.inInput = Entry(self)
self.outInput = Entry(self)
self.minInput = Entry(self,width=8)
Label(self, text="-", font=("微软雅黑", 12), width=1, height=1).grid(row=2,column=2)
self.maxInput = Entry(self,width=8)
self.inInput.grid(row=0,column=1,columnspan=3)
self.outInput.grid(row=1,column=1,columnspan=3)
self.minInput.grid(row=2,column=1)
self.maxInput.grid(row=2,column=3) self.minInput.insert(END,1)
self.maxInput.insert(END,1.1) self.inButton = Button(self, text='选择', command=self.openInDir)
self.outButton = Button(self, text='选择', command=self.openOutDir)
self.inButton.grid(row=0,column=5)
self.outButton.grid(row=1,column=5) self.excuteButton = Button(self, text='输出', command=self.export)
self.excuteButton.grid(row=2,column=5) def export(self):
in_path = self.inInput.get()
out_path = self.outInput.get()
excute_path = ''
excute_count = 0
files = os.listdir(in_path)
for file in files:
excute_path = in_path + '/' + file
im = pilImage.open(excute_path,'r')
if im.size[1]/im.size[0] >= float(self.minInput.get()) and im.size[1]/im.size[0] <= float(self.maxInput.get()):
im.save(out_path + '/' + file, "PNG")
print(out_path + '/' + file)
excute_count = excute_count + 1
messagebox.showinfo('Message', excute_count) def openInDir(self):
self.inInput.delete(0,END)
self.inInput.insert(END,dialog.askdirectory()) def openOutDir(self):
self.outInput.delete(0,END)
self.outInput.insert(END,dialog.askdirectory()) app = Application()
app.master.title('图片处理')
app.mainloop()
其他相关
这里有直接打包好的exe问题 -----> 下载地址
运行截图:

按照需要分别率长宽比导出图片(python 3)的更多相关文章
- C#向PPT文档插入图片以及导出图片
PowerPoint演示文稿是我们日常工作中常用的办公软件之一,而图片则是PowerPoint文档的重要组成部分,那么如何向幻灯片插入图片以及导出图片呢?本文我将给大家分享如何使用一个免费版Power ...
- .net 下新版highcharts本地导出图片bug处理
最近公司要用到highcharts这个插件来生成图表,所以我花了点时间研究了下. 现在最新的版本是3.0.2,这js插件居多优点就不比多说了,demo官网上也很详细.但是优点不爽的地方是,导出图片这个 ...
- Asp.net通过模板(.dot/Html)导出Word,同时导出图片
一.Office组件导出Word(服务器配置麻烦) 需要引用Office的DLL,在下文的附件中,不同的Offic版本用的不一样,虽然高级版本可以兼容低级的,不过,还是统一版本最好 贴上核心代码(转载 ...
- FusionCharts V3图表导出图片和PDF属性说明(转)
百闻不如一见,狠狠点击,快快下载:(演示文档有错误,不提供下载了.待新的演示文档出来.) 许多朋友说上面的DEMO用不了.fusioncharts官方的演示非常不错,就是来不及整理,各位大侠们可以研究 ...
- FusionChart 导出图片 功能实现(转载)
FusionChart 导出图片 功能实现(转载) http://www.cnblogs.com/jiagoushi/archive/2013/02/05/2893468.html 题目:精美Fusi ...
- Highcharts 本地导出图片和PDF asp.net mvc版
啰嗦: 现在大家利用Highcharts开发时,有时候会遇到导出的功能问题,但是highcharts默认是链接自己的服务器上进行处理,但是有时候我们会连不上他的服务器,所以我们要让他在我们的服务器上进 ...
- hightchart导出图片
通常在使用highchart导出图片pdf等文件时,我们一般直接引入exporting.js即可 执行导出操作则会直接请求highchart服务器,执行生成图片等操作,然后下载到客户端: 但这一切的操 ...
- JXLS 2.4.0系列教程(六)番外篇——导出图片(完结)
突然想起来有同学说过能不能导出图片,本来我是想说不懂的,后来我上官网查了查,还挺容易.我就简短的写一写怎么导出图片. 官方提供了导出图片标签: jx:image(lastCell="D10& ...
- 微信小程序 canvas导出图片模糊
//保存到手机相册save:function () { wx.canvasToTempFilePath({ x: , y: , width: , //导出图片的宽 height: , //导出图片的高 ...
随机推荐
- oracle数据库ORA-01654 错误的解决方法
引言: 数据库突然报: ORA-01654: unable to extend index BO.INDEX_indexname by 311072 in tablespace 错误,上网查原因,发现 ...
- FZU Problem 2150 Fire Game
Problem 2150 Fire Game Accept: 145 Submit: 542 Time Limit: 1000 mSec Memory Limit : 32768 KB P ...
- SCAU巡逻的士兵
1142 巡逻的士兵 Description 有N个士兵站成一队列, 现在需要选择几个士兵派去侦察. 为了选择合适的士兵, 多次进行如下操作: 如果队列超过三个士兵, 那么去除掉所有站立位置为奇数的士 ...
- [转]jquery Fancybox丰富的弹出层效果
本文转自:http://www.helloweba.com/view-blog-65.html Fancybox是一款优秀的jquery插件,它能够展示丰富的弹出层效果.前面我们有文章介绍了facyb ...
- POJ 2449 Remmarguts' Date --K短路
题意就是要求第K短的路的长度(S->T). 对于K短路,朴素想法是bfs,使用优先队列从源点s进行bfs,当第K次遍历到T的时候,就是K短路的长度. 但是这种方法效率太低,会扩展出很多状态,所以 ...
- 最长回文子串Manacher算法模板
Manacher算法能够在O(N)的时间复杂度内得到一个字符串以任意位置为中心的回文子串.其算法的基本原理就是利用已知回文串的左半部分来推导右半部分. 首先,在字符串s中,用rad[i]表示第i个字符 ...
- Cookie测试工具小汇
现在很多网站都用到Cookies,特别是用户的登陆以及购物网站的购物车. Cookies 通常用来存储用户信息和用户在某应用系统的操作,当一个用户使用Cookies 访问了某一个应用系统时,Web 服 ...
- 关于SVN版本分支合并的知识
分支的合并类型 合并的工作是把主干或者分支上合并范围内的所有改动列出,并对比当前工作副本的内容,由合并者手工修改冲突,然后提交到服务器的相应目录里.如果当前工作副本是主干,则合并的范围是分支上的改动, ...
- java 21 - 11 IO流的标准输入流和标准输出流
标准输入输出流 System类中的两个成员变量: public static final InputStream in "标准"输入流. public static final P ...
- java 14-3 正则表达式的分割
分割功能 String类的public String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串. 例子: 可以用来做年龄段的筛选,比如说,我要筛选18-26之间 ...