效率提升的问题

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

解决方案

本想用批处理解决,但是考虑到易用性,就用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)的更多相关文章

  1. C#向PPT文档插入图片以及导出图片

    PowerPoint演示文稿是我们日常工作中常用的办公软件之一,而图片则是PowerPoint文档的重要组成部分,那么如何向幻灯片插入图片以及导出图片呢?本文我将给大家分享如何使用一个免费版Power ...

  2. .net 下新版highcharts本地导出图片bug处理

    最近公司要用到highcharts这个插件来生成图表,所以我花了点时间研究了下. 现在最新的版本是3.0.2,这js插件居多优点就不比多说了,demo官网上也很详细.但是优点不爽的地方是,导出图片这个 ...

  3. Asp.net通过模板(.dot/Html)导出Word,同时导出图片

    一.Office组件导出Word(服务器配置麻烦) 需要引用Office的DLL,在下文的附件中,不同的Offic版本用的不一样,虽然高级版本可以兼容低级的,不过,还是统一版本最好 贴上核心代码(转载 ...

  4. FusionCharts V3图表导出图片和PDF属性说明(转)

    百闻不如一见,狠狠点击,快快下载:(演示文档有错误,不提供下载了.待新的演示文档出来.) 许多朋友说上面的DEMO用不了.fusioncharts官方的演示非常不错,就是来不及整理,各位大侠们可以研究 ...

  5. FusionChart 导出图片 功能实现(转载)

    FusionChart 导出图片 功能实现(转载) http://www.cnblogs.com/jiagoushi/archive/2013/02/05/2893468.html 题目:精美Fusi ...

  6. Highcharts 本地导出图片和PDF asp.net mvc版

    啰嗦: 现在大家利用Highcharts开发时,有时候会遇到导出的功能问题,但是highcharts默认是链接自己的服务器上进行处理,但是有时候我们会连不上他的服务器,所以我们要让他在我们的服务器上进 ...

  7. hightchart导出图片

    通常在使用highchart导出图片pdf等文件时,我们一般直接引入exporting.js即可 执行导出操作则会直接请求highchart服务器,执行生成图片等操作,然后下载到客户端: 但这一切的操 ...

  8. JXLS 2.4.0系列教程(六)番外篇——导出图片(完结)

    突然想起来有同学说过能不能导出图片,本来我是想说不懂的,后来我上官网查了查,还挺容易.我就简短的写一写怎么导出图片. 官方提供了导出图片标签: jx:image(lastCell="D10& ...

  9. 微信小程序 canvas导出图片模糊

    //保存到手机相册save:function () { wx.canvasToTempFilePath({ x: , y: , width: , //导出图片的宽 height: , //导出图片的高 ...

随机推荐

  1. Log4j配置与使用

    log4j是Java社区事实上的日志标准解决方案.使用起来比较简单. 一. 简单使用 1.下载jar包放到lib文件夹,并加入到build path中: 2.编写log4j.properties文件, ...

  2. Redis下载及安装部署

    官网介绍:Redis is an open source advanced key-value store.It is often referred to as a data structure se ...

  3. 手工搭建Openvpn

    环境: CentOS 6.4 (final) x86_x64 gcc-4.4.7-16.el6.x86_64 gcc-c++-4.4.7-16.el6.x86_64 lzo-2.03-3.1.e16_ ...

  4. java poi read write xlsx

    package myjava; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce ...

  5. appium 常用api介绍(2)

    前言:接着上一篇继续讲常用的一些api 参考博文:http://blog.csdn.net/bear_w/article/details/50330565 1.send_keys send_keys( ...

  6. Java语法结构

    一.顺序结构(从上往下依次执行) 顺序结构语法比较简单,从上往下依次执行即可. 二.选择结构(选择性执行,如果....则.....) 1.if 语句 if语句,作用是根据判断结果为真或假,选择其中一个 ...

  7. UVA 12266 Stock prices --优先队列

    优先队列. 做法:维护两个优先队列:quesell  和  quebuy, 一个是小值优先,一个是大值优先.每次push的时候,都取各自的Top元素,比较价格,如果卖的比卖的出价低,则成交,各自的要买 ...

  8. POJ 3250 Bad Hair Day --单调栈(单调队列?)

    维护一个单调栈,保持从大到小的顺序,每次加入一个元素都将其推到尽可能栈底,知道碰到一个比他大的,然后res+=tail,说明这个cow的头可以被前面tail个cow看到.如果中间出现一个超级高的,自然 ...

  9. eclipse菜单解释及中英对照《二》

    上篇文章主要介绍了eclipse中每个大的标题下的中英文及其用法. 感谢http://blog.csdn.net/li_jinjian2005/article/details/2831641这个博主. ...

  10. 第51课 C++对象模型分析(下)

    1. 单继承对象模型 (1)单一继承 [编程实验]继承对象模型初探 #include <iostream> using namespace std; class Demo { protec ...