操作图像3-用pillow操作图像

本文介绍了如何使用Pillow库进行图像操作,包括复制、裁剪和粘贴图像。通过crop()方法获取图像的一部分,然后使用paste()方法在原图或者副本上进行图像粘贴,实现了图像的叠加。此外,还提到了rsize()方法用于调整图像的大小。通过这些方法,可以对图像进行灵活的编辑和处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     *         复制和粘贴图像到其他图像
    *           调整图像大小

   copy()方法返回一个新的Image对象,它和原来的Image对象具有一样的图像。如果需要修改图像,同时也希望保持原有的版本不变,这非常有用

这里写图片描述

            catIm和catCopyIm变量包含了两个独立的Image对象,它们的图像相同。既然catCopyIm中

保存了一个Image对象,你可以随意修改catCopyIm,将它存入一个新的文件名,而zophie.没有改变。例如,尝试用paste()方法修改catCopyIm。
paste()方法在Image对象调用,将另一个图像粘贴在它上面。继续环境的例子

这里写图片描述

首先向crop()传入一个矩形元组,指定zophie.png中的一个矩形区域,包含zophie的脸。这将创建一个Image对象,表示230*215的剪裁区域,保存在faceIm中。现在,可以将faceIm粘贴到catCopyIm。

    paste()方法有俩个参数: 一个 ‘’‘源‘’ image对象,一个包含x和y坐标的元组,指明源Image对象粘贴到主Image对象时左上角的位置。

在catCopyIm上两次调用 paste(),第一次传入(0,0),第二个传入(400,500)。这将faceIm俩次粘贴到catCopyIm: 一次faceIm的左上角在(0,0),一次faceIm的左上角在(400,500)。最后将修改后的catCopyIm存入pasted.png。
图片
这里写图片描述

    注意:  尽管名称是copy()和paste(),但是pillow中的方法不使用计算机的剪切版。
    past()方法在原图上修改它的Image对象,它不会返回粘贴后图像的Image对象。如果想调用paste(),但   还要保持原始图像的未修改版本,
    就需要先复制图像,然后在副本上调用paste()。
from PIL import Image
'''打开图像'''
catIm = Image.open('D:\pycharm\lesson\sn01\python_book_2\zophie.png')
'''复制图像'''
catCopyIm = catIm.copy()

'''剪裁图像'''
faceIm = catIm.crop((335,345,565,560))
print(faceIm.size)

'''粘贴图像到catCopyIm变量的Image对象'''
catCopyIm.paste(faceIm,(0,0))
catCopyIm.paste(faceIm,(400,500))

'''保存图像'''
catCopyIm.save('pasted.png')

假定要平铺整个图像,用俩个for循环来实现

'''保存catIm的高度和宽度'''
catImWidth, catImHeight = catIm.size
faceImWidth, faceImHeight = faceIm.size

'''复制图像'''
catCopyTwo = catIm.copy()

'''外层循环'''
for left in range(0,catImWidth, faceImWidth):
    '''内层循环'''
    for top in range(0, catImHeight, faceImHeight):
        print(left, top)
        catCopyTwo.paste(faceIm, (left, top))

'''保存图像'''
catCopyTwo.save('tiled.png')

这里写图片描述


2-调整图像大小
这里写图片描述

这里写图片描述
rsize()方法在Image对象上调用,返回指定宽度和高度的一个新Image对象。
它接受俩个整数的元组作为参数,表示返回图像的新高度和宽度

from PIL import Image


'''打开图像'''
catCopyIm = Image.open(r'D:\image\image.jpg')

'''宽 高赋值给变量'''
width, Height = catCopyIm.size
'''调用resize()传入 新宽 高  int()取整'''
quartersizedIm = catCopyIm.resize((int(width / 2), int(Height / 2)))
'''保存图像'''
quartersizedIm.save('quartersized.png')

'''高度增加300px'''
sveteIm = catCopyIm.resize((width, Height + 300))
sveteIm.save('sveteIm.png')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值