编程语言
首页 > 编程语言> > Python图片库PIL装载小记——Python学习笔记152021-06-05

Python图片库PIL装载小记——Python学习笔记152021-06-05

作者:互联网

Python图片库PIL装载小记——Python学习笔记15

Python编程的第八章这一部分让人有了点GUI的感觉,和照片联系上了。本来想把这几个代码的细节来点抠门式的整理,做到把每行代码都能说出点道道来。一篇谈论外语的音频说是像英国这样的国家,因为英语的万能流行,英国人都不用学什么外语了,以前热门得惊人的法语,英国似乎没有多少学校再把这法语当回事,于是当今英国人的外语教学就在日渐萎缩。
我好像也有这种感觉,有了自己的母语,又有了形形色色的计算机语言,除非职业需要,似乎真用不着再花时间学什么别的语言了。但计算机语言不就相当于一门外语么?你学python,简直就是同时在学习三门语言,一个是汉语,一个是英语,一个就是这个python本身才有的东西,其实也是一门独立的语言,不过不仅仅是为了人际沟通,而是让计算机来和人进行多方沟通罢了。
人这一生,与其说是在与人打交道,换一个角度,不如说是在与语言打交道。到现在就不仅仅是语言,把语言再推广一点,我们还在与图片还有视频打交道呢。我还真没有想到,这编程的事情,到这第八章,就不仅仅是文字代码,还有各种各样的图片了。而要想在python编程中看到图片,至少得把pil或者pillow两个图片库给下载一个。原以为很简单,费了好几天功夫,今天才算是理出点头绪,于是那抠代码的想法就暂且搁置,这篇笔记谈谈pil的装载体验。

一、把python放在D盘

下载pil可不是件简单事,反复寻找答案,你按照那些答案去做,连续几天都是白费力气。我的电脑中C与D两盘都有同样的python3.9.3,是不是两盘重复而不能下载呢?我把C盘的python删掉,依然不行。再把D盘的删掉重装,升级到了395版,还是不行。而且问题出得很奇怪,在ps中打python指令进到python解释器,你要退出用quit的时候,这个quit怎么弄都不退出,每次报没有定义。你退不出,自然就装不了你要装的东西。
在这种寻求过程中,学到点以前不知道的东西。比如原先不知道如何在ps中从C盘砖D盘,一查其实很简单,这转盘的小技巧大概再也忘记不了。
这转盘的小技让我对D盘的python产生点疑问,每一次启动出现的顶层文字总是要少一行。以前使用3.9.3不是这样啊!是不是这个3.9.5版本太高呢?干脆再删掉,换成低一点的版次。由是再删python,重装3.9.3。也是让人狐疑之事,3.9.3没了,几个月之前我还是用的3.9.3呢,那就装3.9.4.。装成功了,又是一件现在还没明白的事,那个顶层的两行文字全出现了,再按照要从编译器回到ps的要求使用quit()退回。
哈哈,竟然就成功了。

二、下载PIL

准备工作做好了,开始来下载照片库PIL。先把pip下载,以下代码明显解决了以前的两个问题。
问题1:在PS中写下指令python,原先只出一行字码,现在两行了,有Type…。
问题2:那个quit()总是报错,现在正常了,直接退到PS。
然后从C盘转到D盘。进到D盘py395,正是紧接python文件的目录。
在这个目录下,开始pip的下载、升级和后续程序。

第一步:下载pip

PS C:\Users\zzx21> python
Python 3.9.4 (tags/v3.9.4:1f2e308, Apr  6 2021, 13:40:21) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()
PS C:\Users\zzx21> cd..
PS C:\Users> cd..
PS C:\> D:
PS D:\> cd python39
PS D:\python39> cd py395
PS D:\python39\py395> pip list
Package    Version
---------- -------
pip        20.2.3
setuptools 49.2.1
WARNING: You are using pip version 20.2.3; however, version 21.1.2 is available.
You should consider upgrading via the 'd:\python39\python.exe -m pip install --upgrade pip' command.
PS D:\python39\py395>

第二步:按照PS中提示,成功给pip升级

在PS D下的目录python39后写上python.exe -m pip install --upgrade pip,即:

PS D:\python39> python.exe -m pip install --upgrade pip
Collecting pip
  Downloading pip-21.1.2-py3-none-any.whl (1.5 MB)
     |████████████████████████████████| 1.5 MB 939 kB/s
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 20.2.3
    Uninstalling pip-20.2.3:
      Successfully uninstalled pip-20.2.3
Successfully installed pip-21.1.2
PS D:\python39>

第三步:再来装pillow或者PIL,到底该装哪一个,有点拿不准,先查查资料。好像任选一个即可,那就选pillow吧。

PS D:\python39> pip install pillow
Collecting pillow
  Downloading Pillow-8.2.0-cp39-cp39-win_amd64.whl (2.2 MB)
     |████████████████████████████████| 2.2 MB 1.1 MB/s
Installing collected packages: pillow
Successfully installed pillow-8.2.0
PS D:\python39>
用pip install pillow指令,很快完成下载。

第四步:再来检查是否下载成功。

PS D:\python39> pip list
Package    Version
---------- -------
Pillow     8.2.0
pip        21.1.2
setuptools 49.2.1
PS D:\python39>

用pip list也是顺利成功,这个下载结果也可以在目录下去查,可以在在python下的Lib之下查到。
目录照片
在这里插入图片描述

三、PIL虽然有了,但图片依然看不到

但下载后的涉及pillow的代码仍然打不开,只有等待在后的知识补救了。
做成文件viewer-tk.py。

import os, sys
from tkinter import *

imgdir = 'images'
imgfile = 'london-2010.gif'
if len(sys.argv) > 1:
    imgfile = sys.argv[1]
imgpath = os.path.join(imgdir, imgfile)

win = Tk()
win.title(imgfile)
imgobj = PhotoImage(file=imgpath)
Label(win, image=imgobj).pack()
print(imgobj.width(), imgobj.height())
win.mainloop()

但在PS中打不开

PS D:\python39\py395> cd..
PS D:\python39> cd GUI
PS D:\python39\GUI> cd Pillow
PS D:\python39\GUI\Pillow> python view-tk.py.gif
D:\python39\python.exe: can't open file 'D:\python39\GUI\Pillow\view-tk.py.gif': [Errno 2] No such file or directory
PS D:\python39\GUI\Pillow> python viewer-tk.py.gif
D:\python39\python.exe: can't open file 'D:\python39\GUI\Pillow\viewer-tk.py.gif': [Errno 2] No such file or directory
PS D:\python39\GUI\Pillow> python viewer-tk.py
  File "D:\python39\GUI\Pillow\viewer-tk.py", line 2
    from tkinter import
                       ^
SyntaxError: invalid syntax

怀疑导入import后差一个*,补上后依然打不开

PS D:\python39\GUI\Pillow> python viewer-tk.py
Traceback (most recent call last):
  File "D:\python39\GUI\Pillow\viewer-tk.py", line 12, in <module>
    imgobj = PhotoImage(file=imgpath)
  File "D:\python39\lib\tkinter\__init__.py", line 4064, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "D:\python39\lib\tkinter\__init__.py", line 4009, in __init__
    self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "images\london-2010.gif": no such file or directory
PS D:\python39\GUI\Pillow>

目录似乎不对,依然还没有看到图片。

PS D:\python39> cd GUI
PS D:\python39\GUI> cd Pillow
PS D:\python39\GUI\Pillow> python viewer-PIL.py
Traceback (most recent call last):
  File "D:\python39\GUI\Pillow\viewer-PIL.py", line 13, in <module>
    imgobj = PhotoImage(file=imgpath)
  File "D:\python39\lib\site-packages\PIL\ImageTk.py", line 89, in __init__
    image = _get_image_from_kw(kw)
  File "D:\python39\lib\site-packages\PIL\ImageTk.py", line 58, in _get_image_from_kw
    return Image.open(source)
  File "D:\python39\lib\site-packages\PIL\Image.py", line 2912, in open
    fp = builtins.open(filename, "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'images\\florida-2009-1.jpg'
Exception ignored in: <function PhotoImage.__del__ at 0x000001F217B15040>
Traceback (most recent call last):
  File "D:\python39\lib\site-packages\PIL\ImageTk.py", line 118, in __del__
    name = self.__photo.name
AttributeError: 'PhotoImage' object has no attribute '_PhotoImage__photo'

似乎是Pil在发挥作用了,但图片却唤不出来,看来还有一段艰苦的路要走。

标签:PS,PIL,图片库,Python,GUI,py,python,pip,python39
来源: https://blog.csdn.net/weixin_41670255/article/details/117606142