* 复制和粘贴图像到其他图像
* 调整图像大小
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')