专栏首页技术向python PIL 操作图片

python PIL 操作图片

本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/article/python_PIL_pictures/

python中对图片的操作多种多样,本文介绍其中一种:PIL

Image 类是 PIL 库中一个非常重要的类,通过这个类来创建实例可以有直接载入图像文件,读取处理过的图像和通过抓取的方法得到的图像这三种方法。

安装

PIL并不是包名,要使用该包需要首先安装pillow包。

pip install pillow

博文指出PIL和pillow不是同一个事物,且PIL和pillow不能共存,暂没有查证。目前通过安装pillow包使用PIL没有发现问题。

从文件中读取图片

from PIL import Image
myimg = Image.open('python.png')
myimg
# output: <PIL.PngImagePlugin.PngImageFile image mode=RGBA size=1890x800 at 0x26D5E8B8828>
dir(myimg)
# output: ['_Image__transformer', '_PngImageFile__idat', '__array_interface__', '__class__', '__copy__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_close_exclusive_fp_after_loading', '_copy', '_crop', '_dump', '_ensure_mutable', '_exclusive_fp', '_expand', '_min_frame', '_new', '_open', '_repr_png_', '_seek_check', 'alpha_composite', 'category', 'close', 'convert', 'copy', 'crop', 'decoderconfig', 'decodermaxblock', 'draft', 'effect_spread', 'filename', 'filter', 'format', 'format_description', 'fp', 'frombytes', 'fromstring', 'getbands', 'getbbox', 'getchannel', 'getcolors', 'getdata', 'getextrema', 'getim', 'getpalette', 'getpixel', 'getprojection', 'height', 'histogram', 'im', 'info', 'load', 'load_end', 'load_prepare', 'load_read', 'mode', 'offset', 'palette', 'paste', 'png', 'point', 'putalpha', 'putdata', 'putpalette', 'putpixel', 'pyaccess', 'quantize', 'readonly', 'remap_palette', 'resize', 'rotate', 'save', 'seek', 'show', 'size', 'split', 'tell', 'text', 'thumbnail', 'tile', 'tobitmap', 'tobytes', 'toqimage', 'toqpixmap', 'tostring', 'transform', 'transpose', 'verify', 'width']
myimg.show()
# 使用默认看图软件打开

从矩阵生成图片

注意矩阵的下述属性:

  1. 维度 要么是两维的(黑白),要么是三维的(彩色)且第三维为3
  2. 数据类型 必须为uint8型,建议使用numpy

彩色(三通道)

from PIL import Image
import numpy as np
Image.fromarray(np.zeros([3,3,3],np.uint8))
# output: <PIL.Image.Image image mode=RGB size=3x3 at 0x26D5ED0FB70> 

黑白(单通道)

from PIL import Image
import numpy as np
Image.fromarray(np.zeros([3,3],np.uint8))
# output: <PIL.Image.Image image mode=L size=3x3 at 0x26D5ECCAE80>

注意如果第三维通道数为1,会报错

图片resize

myimg
# output: <PIL.PngImagePlugin.PngImageFile image mode=RGBA size=1890x800 at 0x26D5E8B8828>
myimg.resize((4,4))
# output: <PIL.Image.Image image mode=RGBA size=4x4 at 0x26D5FB4AD68>

图片保存

myimg.resize((4,4)).save('hello.png')

报错信息

TypeError: Cannot handle this data type

这种一般是通道数不对

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 为bookstack制作docker image

    配置文件的介绍见普通安装指导, 涉及到数据库的配置、网站基本配置等。而这些配置是go语言直接读取的,所以无法用环境变量(不会替换,而是直接原样打印成字符串)。

    羽翰尘
  • 使用公网CA部署内网https网站

    有时候内部网络不能对公网开放(即使有登陆限制),又不希望网站内容被嗅探。使用https技术可以实现网站与浏览器的内容加密,但是根证书机构无法访问内网服务器。

    羽翰尘
  • 公网CA实现内网https

    有时候内部网络不能对公网开放(即使有登陆限制),又不希望网站内容被嗅探。使用https技术可以实现网站与浏览器的内容加密,但是根证书机构无法访问内网服务器。

    羽翰尘
  • Python图片处理模块PIL操作方法(pillow)

    PIL中所涉及的基本概念有如下几个:通道(bands)、模式(mode)、尺寸(size)、坐标系统(coordinate system)、调色板(palett...

    砸漏
  • python实现图片横向和纵向拼接

    本文实例为大家分享了python实现图片横向和纵向拼接的具体代码,供大家参考,具体内容如下

    砸漏
  • NVIDIA创下新纪录:53分钟训练出BERT,2毫秒完成AI推理,最大语言模型包含83亿个参数

    NVIDIA在语言理解方面成功突破,它在BERT的训练和推理方面创下了纪录,使开发人员有机会使用BERT和实时推理工具(如TensorRT)更自然地开发会话AI...

    AiTechYun
  • A018-布局之TableLayout

    表格布局,顾名思义像表格一样进行布局。我们通常配合TableRow一起使用,TableRow代表一行,有多少个TableRow就有多少行。

    用户1130025
  • 五分钟了解共识机制

    “共识机制是区块链的灵魂。”这是业内经常能听到的一句话,共识机制在区块链中的地位可想而知。那么到底什么是共识机制呢?我们不妨从拜占庭将军问题说起。

    CDA数据分析师
  • CentOS7.X的系统管理、安全设置及系统优化思路

    版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

    耕耘实录
  • 自动调试自动编译五分钟上手

    王小婷

扫码关注云+社区

领取腾讯云代金券