Python3用tkinter和PIL实现看图工具
需求
想做看图工具的,必然要支持jpg、png等常见格式,但tkinter是个纯粹的GUI库,不像GTK、QT那样大而全,所以只支持gif和ppm两种格式,局限很大,必须搭配图像处理库,才能实现基本的看图功能
在python生态系统里,最常用的图像处理库是PIL
Python3下库的安装
这两个库在python3下跟python2有一定差异:
tkinter首字母变成小写
PIL官方还不支持Python3,但有个fork叫Pillow,可以替代官方并且接口保持不变,需要pip install Pillow安装
技术原理
那么怎么让PIL读取jpg文件生成的内存对象被tkinter处理呢?PIL的开发人员很贴心的提供了一个PhotoImage类,跟tkinter包里的同名类接口兼容,所以可以直接将PIL生成的PhotoImage对象赋给tkinter中能接收PhotoImage入参的所有控件(比如Label、Canvas等)
代码示例
#encoding=utf-8 import tkinter as tk from PIL import Image, ImageTk class App(tk.Frame): def __init__(self, master=None): super().__init__(master, width=400, height=300) self.pack() self.pilImage = Image.open("CSDN.png") self.tkImage = ImageTk.PhotoImage(image=self.pilImage) self.label = tk.Label(self, image=self.tkImage) self.label.pack() def processEvent(self, event): pass if __name__ == '__main__': root = tk.Tk() app = App(root) root.mainloop()
最终显示效果
相关推荐
-
Python实现基于PIL和tesseract的验证码识别功能示例
本文实例讲述了Python实现基于PIL和tesseract的验证码识别功能.分享给大家供大家参考,具体如下: 之前搞这个搞了一段时间,后面遇到了点小麻烦,导致识别率太低了,最多也就百分之20的样子.心灰意冷,弃了一段时间.上次在论坛看到一篇大牛的关于PIL对图片各种处理各种算法的博突然又想起了这个,又随便搞了下,大大提高了识别率啊.先给代码: 原图: im = Image.open("C:\Users\Administrator\Desktop\python\\3.png") #调色
-
python使用PIL给图片添加文字生成海报示例
前言 曾经,我也算半个所谓的文学青年.大学前两年大部分时间泡在图书馆看各种文学类的书. 那时的我,对于未来有很多遐想:写小说.写时评.写诗歌... 总而言之,就是成为一个文字工作者 现在我确实成为了一个文字工作者,只不过写的是代码... 在某个月黑风高的晚上,看着满屏花花绿绿的代码,揉着酸涩的眼睛,打了一个长长的哈欠.突然进入了禅定时刻: "还记得年少时的梦吗?" 我又开始想写作了,一个写了几年代码的老男人,在被生活粗暴地摁在地上摩擦几回后,突然触发了内心的柔软,想写些东西. 要写些什
-
Python3.4 tkinter,PIL图片转换
先给大家分享一下全部代码 import os from PIL import Image import tkinter import tkinter.filedialog import tkinter.messagebox class Window(): def __init__(self): self.root = root = tkinter.Tk() self.menu = tkinter.Menu(root) self.submenu = tkinter.Menu(self.menu,
-
解决win64 Python下安装PIL出错问题(图解)
1.软件版本 首先我先安装了 python 2.7 pip是 8.1.2 2.当我要安装PIL时,我在cmd下面输入:pip install PIL 错误提示是: Could not find a version that satisfies the requirement PIL (from versions: ) No matching distribution found for PIL 3.错误原因:后来找了很多方法,发现我的电脑是64位的,而官网只提供32位的,就是自己去官网下载的其
-
python使用pil库实现图片合成实例代码
本文研究的主要是python PIL实现图片合成的相关内容,具体介绍如下,分享实例代码. 在项目中需要将两张图片合在一起.遇到两种情况,一种就是两张非透明图片的合成, 一种是涉及到透明png的合成. 相关API见 http://pillow.readthedocs.io/en/latest/reference/Image.html 第一种情况,直接将两张图片合在一起就可以了.如下图所示,将两张图片合在一起 += 详细代码 from PIL import Image #加载底图 base_img
-
Python切片工具pillow用法示例
本文实例讲述了Python切片工具pillow用法.分享给大家供大家参考,具体如下: 切片:使用切片将源图像分成许多的功能区域 因为要对图片进行切片裁剪,所以用到切片工具必不可少,在ubuntu下有很多的图片处理工具,如 GIMP(Ubuntu的下的Photoshop),shotwell,shotter等等. 但是我想吧一张图片剪裁下来,用那些工具不怎么方便(其实可能是我没有找到而已),于是上网搜索资料,发现各式各类的工具,其中发现了pollow这款工具. 算是Python下的一个模块吧,这个模
-
Python离线安装PIL 模块的方法
python的库一般都用pip安装. 但是有时候也会出现在线安装失败的情况,如下图安装PIL模块时报错: 这时候可以采取离线安装的方式: 一.首先下载离线安装包 PIL官方版不支持py3,不过有非官方那个的替代品pillow,地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pillow 注意选择版本:我的python是Python2.7,系统是64位的,但是安装了32位的Python2.7.10 选择 Pillow-4.2.1-cp27-none-wi
-
Python 使用PIL中的resize进行缩放的实例讲解
今天突然发现自己缩放程序有问题,图片缩放尺度大了就会失真.小编一直使用的是缩小的功能,图片缩小整体0.7还可以,整体缩小0.65就会有部分的信息丢失,怎奈我的图都是大图,没办法只能寻找解决方法. 原来代码 img = img.resize((width, height)) 后来找资料发现 PIL带ANTIALIAS滤镜缩放结果 所以将代码改为: img = img.resize((width, height),Image.ANTIALIAS) 以上这篇Python 使用PIL中的resize进行
-
python使用PIL模块获取图片像素点的方法
如下所示: from PIL import Image ########获取图片指定像素点的像素 def getPngPix(pngPath = "aa.png",pixelX = 1,pixelY = 1): img_src = Image.open(pngPath) img_src = img_src.convert('RGBA') str_strlist = img_src.load() data = str_strlist[pixelX,pixe
-
Python 调用PIL库失败的解决方法
今天学习Python的时候,需要安装一个第三方库,Python Imaging Library,是Python下面一个非常强大的处理图像的工具库,不过PIL目前只支持到Python2.7版本. Pillow是PIL的一个派生分之,目前的最新版本是3.0 安装Pillow的时候,打开Python的安装目录(例如我的是C:\Python27\Scripts),命令行启用easy_install.exe pip pip是Python包管理宫羽,主要用于安装PYPI(python package ind
随机推荐
- iOS 中使用正则表达式判断身份证格式及银行卡号格式是否正确(推荐)
- CSS网页布局入门教程12:纵向导航菜单
- 理解PHP中的Session及对Session有效期的控制
- ruby开发vim插件小结
- C++设置事件通知线程工作的方法
- Android编程之简单逐帧动画Frame的实现方法
- THREE.JS入门教程(5)你应当知道的十件事
- Mysql select in 按id排序实现方法
- 新浪微博第三方登录界面上下拉伸图片之第三方开源PullToZoomListViewEx(二)
- 详解PHP执行定时任务的实现思路
- 微信小程序 bnner滚动实例详解
- jquery插件uploadify多图上传功能实现代码
- 网页防止tab键的使用快速解决方法
- JS实现鼠标框选效果完整实例
- asp adodb.stream对象的方法/属性
- C# Split分隔字符串的应用(C#、split、分隔、字符串)
- Android TextView实现带链接文字事件监听的三种常用方式示例
- 主流交换机的镜像配置方法
- Tensorflow实现神经网络拟合线性回归
- Python一键安装全部依赖包的方法