RGBA解释:A代表第三个参数,透明度
RGBA 值是一组数字,指定顔色中的红、绿、蓝和 alpha(透明度)的值。
在 Pillow 中,RGBA 值表示为四个整数值的元组。例如,红色表示为(255,0,0,255)。
from PIL import Image #导入模块
Pillow 的模块名称是 PIL

备注(tkinter库中的Image会有冲突)2022.3.13发现,
解决方法
import PIL
PIL.Image.open( ) 使用

备注:
由于 Pillow 的创建者设计 Pillow 模块的方式,你必须使用 from PIL import Image 形式的 import 语句,而不是简单地 import PIL。

读取图片属性:

from PIL import ImagecatT = Image.open('zophie.jpg')    # 加载图片
print(catT.size)                   # 获得图片尺寸
width, height = catT.size          # 用两个变量接收长 和高尺寸元组数值
print(width)
print(height)
# --------------------------------------------------------
print(catT.filename)               # 获得图片名称
print(catT.format)                 # 获得图片的格式
print(catT.format_description)     # 获取图片格式和描述catT.save('zophie.png')            # 保存图片png格式,相当于转换格式

创建图片:

from PIL import Image
im = Image.new('RGBA', (200, 200), 'red')     # 创建图片,RGBA模式,图片尺寸,图片背景颜色red红色
im.save('1.png')
im2 = Image.new('RGBA', (220, 220))           # 创建图片,RGBA模式,图片尺寸,第三个参数没写,不可见的黑色,代表透明
im2.save('2.png')                             # 创建颜色是png格式才可以

1.图片裁剪:crop()函数

from PIL import Image
catT = Image.open('zophie.jpg')            # 加载图片
Im = catT.crop((241, 26, 341, 126))        # 裁剪图像,第一个和第二个参数,X,Y起点坐标,第三和第四个裁剪终点坐标
Im.save('裁剪后图.png')                     # 裁剪保留原图,不变,创建新的裁剪后图

2.复制黏贴,将剪切图到复制图中 copy()复制图片函数; paste()输出黏贴函数,相当于贴水印

from PIL import Image
cat_y = Image.open('zophie.png')             # 加载图片,赋值给cat_y
cat_c = cat_y.copy()                         # 复制图片,到参数cat_c
jianqie = cat_y.crop((241, 26, 341, 126))    # 剪切图片
print(jianqie.size)                          # 输出剪切图片尺寸cat_c.paste(jianqie, (0, 0))                 # 将剪切图黏贴到,复制的cat_c中,第一个坐标0,0,起始坐标
cat_c.paste(jianqie, (100, 200))             # 第二次复制剪切图
cat_c.save('复制后图.png')                    # 保存复制后图片为png图

3.图像调整大小:resize()函数

from PIL import Image
catIm = Image.open('zophie.png')                            # 加载图片,赋值给cat_y
width, height = catIm.size                                  # 元组赋值法:用2个函数接收图像尺寸赋值
img = catIm.resize((int(width / 2), int(height / 2)))       # 按比例将图片缩小一半除以2
img.save('调整大小1.png')
img = catIm.resize((width, height + 300))                   # 只将高度增加300px
img.save('调整大小2.png')备注:我们将 catIm.size 元组中的两个值赋给变量 width 和 height。使用 width和 height,
而不是 catIm.size[0]和 catIm.size[1],让接下来的代码更易读
备注:resize()方法的元组参数中只允许整数,这就是为什么需要用 int()调用对两个除以 2 的值取整【图像缩小,防止失真:PIL带ANTIALIAS滤镜缩放结果,加入:Image.ANTIALIAS参数】
代码改造:  img = img.resize((width, height),Image.ANTIALIAS)

4.图像旋转,和镜像翻转

from PIL import Image
catIm = Image.open('zophie.png')                            # 加载图片,赋值给cat_y
catIm.rotate(90).save('旋转1.png')                          # 逆时针,旋转90度,
catIm.rotate(180).save('旋转2.png')                         # 逆时针,旋转180度
catIm.rotate(270).save('旋转3.png')                         # 逆时针,旋转270度# 画布撑大,expand=True
# 逆时针,旋转39度,添加expand参数接受图片框架被撑大,改变整体画布大小
catIm.rotate(39, expand=True).save('旋转1.png')
catIm.rotate(39).save('旋转1.png')                          # 逆时针,旋转39度,无expand参数,整体画布保持不变!# 镜像翻转
catIm.transpose(Image.FLIP_LEFT_RIGHT).save('水平镜像翻转.png')    # 水平镜像翻转
catIm.transpose(Image.FLIP_TOP_BOTTOM).save('垂直镜像翻转.png')    # 垂直镜像翻转

5.更改单个像素getpixel()函数 和putpixel()函数

from PIL import Image
im = Image.new('RGBA', (100, 100))
print(im.getpixel((0, 0)))    # 获取0,0坐标颜色值for x in range(100):                           # 嵌套循环for   range(100)是0-99范围内for y in range(50):print(x, y)im.putpixel((x, y), (210, 210, 210))    # 给图片上色from PIL import ImageColor                      # 导入ImageColor模块来获取颜色单词名称
for x in range(100):   for y in range(50, 100):im.putpixel((x, y), ImageColor.getcolor('darkgray', 'RGBA'))im.save('putPixel.png')

6.im.save( )相关参数

6.1.关于DPI参数

DPI值仅为计算机图像上的元数据。作用是给出了如何显示或打印图像的参数。简单而言:DPI设置是建议图像的缩放级别。修改DPI不会改变图像的内容。如果您想要较大的图像,则修改生成的图片大小,而不是从dpi方面解决。

draw = ImageDraw.Draw(im, 'CMYK')                 #绘制文件
im.save("D:/target.jpg", dpi=(300.0, 300.0))      #保存文件

6.2.Pillow Image.save 保存为jpg图片压缩

在使用Pillow中的Image.save()方法,使用默认参数保存jpg图片的过程中发现图片被压缩的很严重,导致原来很大的大小变成几十K。这是因为在保存为jpg的过程中,内部使用压缩算法对图片进行的压缩处理。
但是有些时候往往需要图片的大小不能变化太大或不能太小。所以在使用此方式时可以加入参数:

im.save(img_name, quality=95)    # 推荐95最佳

quality参数: 保存图像的质量,值的范围从1(最差)到95(最佳)。 默认值为75,使用中应尽量避免高于95的值; 100会禁用部分JPEG压缩算法,并导致大文件图像质量几乎没有任何增益。

==im.save( )==方法还有一个可以配合quality使用的参数,能够大大增加图片大小

im.save(img_name, quality=95, subsampling=0)

可能的子采样值是0,1和2,对应于4:4:4,4:2:2和4:1:1(或4:2:0?)。经过实践将值设为0便可以满足图片大小增大的需求。
注意: 以上方法的参数只针对于保存为JPG/JPEG格式的图片的情况。

实战案例:

import os
from PIL import Image
global width, height
SIZE_800 = 800
os.makedirs('Logo水印后文件夹', exist_ok=True)                          # 用os新建文件夹
logoIm = Image.open('catlogo.png')                                    # 登录水印图片
logoWidth, logoHeight = logoIm.size                                   # 接收水印图尺寸并赋值# for遍历当前文件夹中所有文件,用.表示当前文件夹
for wenjian in os.listdir('.'):                            if not (wenjian.endswith('.png') or wenjian.endswith('.jpg')) or wenjian == 'catlogo.png':       continue                                                      # 跳过非图像文件和徽标文件本身im = Image.open(wenjian)                                          # filename为读取文件全名print(im)width, height = im.sizeif width > SIZE_800 and height > SIZE_800:                            # 判断读取的图片是否大于800pxif width > height:height = int((SIZE_800 / width) * height)width = SIZE_800else:width = int((SIZE_800 / height) * width)height = SIZE_800print('Resizing %s...' % (wenjian))
im = im.resize((width, height))                                                     # 调整图片大小
print('Adding logo to %s...' % (wenjian))# 黏贴图片,黏贴水印 ,第一个参数,黏贴的水印第二个参数,黏贴的坐标位置,第三个参数,遮罩,透明图像
im.paste(logoIm, (width - logoWidth, height - logoHeight), logoIm)
im.save(os.path.join('Logo水印后文件夹', wenjian))                                   # 保存到指定文件夹

Pillow图像处理相关推荐

  1. python学习-Pillow图像处理

    python学习-Pillow图像处理 Pillow中文文档:https://pillow-cn.readthedocs.io/zh_CN/latest/handbook/tutorial.html ...

  2. python——适用于py3的pillow图像处理模块plist组图分割

    首先说明一下PIL库,PIL(Python Imaging Library)是Python一个强大方便的图像处理库,之前的博客也有用到过PIL模块的demo http://blog.csdn.net/ ...

  3. python 图像处理_Python常用库-Pillow图像处理

    阅读文本大概需要 2.6 分钟. 在Pyhton图像库「Python Imaging Library」支持大量的图片格式,是图像处理和批处理的最佳选择,可以用这个来创建缩略图.文件格式之间的转换.打印 ...

  4. Pillow图像处理(PIL.Image类的详细使用)

    文章目录 Opencv.Matplotlib(plt).Pillow(PIL).Pytorch读取数据的通道顺序 Python图像处理库(PIL.Pillow.Scikit-image.Opencv) ...

  5. python 包之 Pillow 图像处理教程

    一.安装 被认为是python官方图像处理库 PIL非常适合于图像归档以及图像的批处理任务.可以使用PIL创建缩略图,转换图像格式,打印图像等等 PIL支持众多的GUI框架接口,可以用于图像展示 PI ...

  6. 算法实战应用案例精讲-【图像处理】Pillow图像处理(python代码实战)

    目录 操作图像 计算机图像基础 颜色和RGBA值 坐标和 Box 元组 CMYK 和 RGB着色

  7. 简单实用的Python图像处理库Pillow

    Pillow图像处理 Pillow 库的安装 图象处理基本知识 图像的RGB 色彩模式 像素阵列 Image 模块 打开和新建 混合 透明度混合处理 遮罩混合处理 复制和缩放 复制图像 缩放像素 缩放 ...

  8. Python图像处理库Pillow(PIL)的简单使用

    一.PIL和Pillow图像处理库 图像库PIL(Python Image Library)是Python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像 ...

  9. 图像处理实战-Python编程进阶

    pillow图像处理库 PIL(Python Imaging Library)是Python常用的图像处理库,但PIL仅支持到Python2.7,后一群志愿者在PIL的基础上创建了PIL的兼容版本Pi ...

  10. MOOC网神经网络与深度学习TensorFlow实践3——数字图像处理、TensorFlow基础

    数字图像处理 数字图像基本概念 pillow图像处理库 手写数字数据集MNIST TensorFlow基础 TensorFlow2.0特性 创建张量 维度变换 部分采样 张量运算

最新文章

  1. 怎么讲d 盘里的软件弄到桌面_教大家电脑怎么把e盘文件移到d位置
  2. 浅析掌握 Python数据分析与展示的几个要点
  3. 用qss 来控制qlabel显示字体的位置_Word表格总填不好,这些技巧轻松来拯救
  4. Linux服务器同步时间
  5. 『程序员』 [程序人生]程序员几种不同的境界
  6. 爬虫5-BeautifulSoup模块简解
  7. iMac 是什么?苹果2021新款 iMac 购买建议
  8. 地球人口承载力估计(信息学奥赛一本通-T1005)
  9. 《Go 语言程序设计》读书笔记 (九) 命令工具集
  10. 前台啊,就是这么杂!
  11. Netflix:当你按下“播放”的时候发生了什么?
  12. JavaScript在线代码编辑器-技术选型
  13. Segue区别及视图的切换
  14. python元组元素的提取_Python 元组
  15. 互联网思维和项目管理
  16. ICCV、ECCV、CVPR三大国际会议
  17. 【FLUENT】【VOF】液滴铺展问题模拟示例
  18. 第一章 android以及智能手机行业相关简介
  19. taobao.trades.sold.query( 根据收件人信息查询交易单号 )
  20. 比尔及梅琳达·盖茨基金会承诺将投入最高1.2亿美元帮助低收入国家获取新冠药物...

热门文章

  1. 无线5G CPE与AP
  2. wword中如何在方框(□)中打钩(√)
  3. 造梦西游4手游服务器维护,造梦西游4手机版常见问题解答 新手看过来
  4. 【人工智能行业大师访谈4】吴恩达采访Yoshua Bengio
  5. 自然之州阿肯色及温泉国家公园
  6. linux 添加 缺省 网关,CentOS 如何设置缺省网关
  7. 齐次线性方程组与非齐次线性方程组的区别
  8. vue解决跨域问题(Vue-CLI)
  9. 实现数据结构中的栈---后进先出LIFO
  10. C# 利用winrar解压带密码的压缩包