python中save 函数_超全Python图像处理讲解!花五天才整理的!

文章目录1.1 、打开图片和显示图片

1.2、创建一个简单的图像

1.4、图像旋转和格式转换

三、ImageChops模块(图像合成)

四、ImageEnhance模块(色彩、亮度)

Pillow模块讲解

一、Image模块

1.1 、打开图片和显示图片

对图片的处理最基础的操作就是打开这张图片,我们可以使用Image模块中的 open(fp, mode)方法 ,来打开图片。open方法接收两个参数,第一个是文件路径,第二个是模式。主要的模式如下:

mode(模式)bands(通道)说明“1”1数字1,表示黑白二值图片,每个像素用0或1共1位二进制码表示“L”1灰度图“P”1索引图“RGB”324位真彩图“RGBA”4“RGB”+透明通道“CMYK”4印刷模式图像

更多的模式也就不说了,关于模式的模式的详细介绍我也不知道。这个open方法返回一个Image对象,mode也不是必须参数。打开图片代码如下:

from PIL import Image

# 打开图片

im = Image.open('test.jpg')

# 显示图片

im.show()

当然显示图片不是我们的重点,我们获取Image对象之后,就可以获取它的一些信息了。

print('图像的格式:', im.format)

print('图像的大小:', im.size)

print('图像的宽度:', im.width)

print('图像的高度:', im.height)

# 传入坐标的元组

print('获取某个像素点的颜色值:', im.getpixel(100, 100))

在我的环境中运行结果如下:

图像的格式: JPEG

图像的大小: (3968, 2976)

图像的宽度: 3968

图像的高度: 2976

获取某个像素点的颜色值: (198, 180, 132)

1.2、创建一个简单的图像

在Image模块中,提供了创建图像的方法。主要是通过**Image.new(mode, size, color)**实现,该方法传入三个参数:mode:图像的创建模式

size:图像的大小

color:图像的颜色

用该方法可以创建一个简单的图像,之后我们可以通过save方法将图像保存:

from PIL import Image

# 创建一个简单的图像

im = Image.new('RGB', (100, 100), 'red')

# 保存这个图像

im.save('red.png')

生成图片如下:

1.3、图像混合

(1)透明度混合

透明度混合主要是使用**Image中的blend(im1, im2, alpha)**方法,对该方法的解释如下:im1:Image对象,在混合的过程中,透明度设置为(1-apha)

im2:Image对象,在混合的过程中,透明度设置为(apha)

alpha:透明度,取值是0-1。当透明度为0是,显示im1对象;当透明度为1时,显示im2对象

注意:im1和im2的大小必须一样,且mode都为RGB

代码实现如下:

from PIL import Image

# 打开im1

im1 = Image.open('pic.jpg').convert(mode='RGB')

# 创建一个和im1大小一样的图像

im2 = Image.new('RGB', im1.size, 'red')

# 混合图片,并显示

Image.blend(im1, im2, 0.5).show()

下面为原图和混合图的对比:

不得不说,我家艾斯真滴帅。

(2)遮罩混合

接下来就是很迷的时刻了,我们可以通过 Image.composite(im1, im2, mask) 方法实现遮罩混合。三个参数都是Image对象,该方法的作用就是 使用mask来混合im1和im2 。我是听不懂,你们能听懂最好给我讲一下。具体实现如下:

# 这句代码写了好多遍,我真不想写了

from PIL import Image

# 打开图像1

im1 = Image.open('pic1.jpg')

# 打开图像2

im2 = Image.open('pic2.jpg')

# 重新设置im2的大小

im2.resize(im1.size)

# 将图像2的三个色道分离,其中r、g、b都为Image对象

r, g, b = im2.split()

# 遮罩混合

Image.composite(im1, im2, b).show()

注意:im1、im2和mask的大小必须一样

im1、im2和遮罩混合效果对比如下:

依旧是我帅气的艾斯。

1.4、图像缩放

(1)按像素缩放

按像素缩放通过 Image.eval(im1, fun)方法 实现,其中im1为我们老生常谈的Image对象了;第二个为一个方法(函数),该函数传入一个参数,即像素点。该函数会对图片中每个像素点进行函数内的操作。下面我们对来简单使用一下这个方法:

from PIL import Image

# 打开一张图像

im = Image.open('抠鼻屎.jpg')

# 对该图像每个像素点进行*2处理

Image.eval(im, lambda x:x*2).show()

这里我使用的lambda表达式,当然一般也都是用lambda表达式,不过你也可以像下面这样写:

  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值