1旋转、翻转图像
图像可以用rotate()方法旋转,该方法返回旋转后的新Image对象,并保持原始Image对象不变。rotate()的参数是一个整数或浮点数,
表示图像逆时针旋转的度数。
from PIL import Image
'''打开图像'''
catCopyIm = Image.open(r'D:\image\image.jpg')
'''逆时针旋转90度的新Image图像'''
catCopyIm.rotate(90).save('rotate90.png')
'''逆时针旋转180度的新Image图像'''
catCopyIm.rotate(180).save('rotate180.png')
'''逆时针旋转270度的新Image图像'''
catCopyIm.rotate(270).save('rotate270.png')
注意,当图像旋转90或270度时,宽度和高度会变化。如果旋转其他角度,图像 的原始尺寸会保持; windows上,
使用黑色的背景来填补旋转造成的缝隙
rotate()方法有一个可选的expand关键字参数,如果设为True,就会放大图像的尺寸,以适应整个旋转后的新图像
'''旋转6度'''
catCopyIm.rotate(6).save('roteat6.png')
'''expand设置为True'''
catCopyIm.rotate(6, expand=True).save('roteat6_expand.png')
transpose()方法,得到图像的”镜像翻转” 必须传入Image.FLIP_LEFT_RIGHT
或Image.FLIP_TOP_BOTTOM。
'''水平翻转'''
catCopyIm.transpose(Image.FLIP_LEFT_RIGHT).save('horizontal_flip.png')
'''垂直翻转'''
catCopyIm.transpose(Image.FLIP_TOP_BOTTOM).save('vertrical_flip.png')
以上demo:
from PIL import Image
'''打开图像'''
catCopyIm = Image.open(r'D:\image\image.jpg')
'''逆时针旋转90度的新Image图像'''
catCopyIm.rotate(90).save('rotate90.png')
'''逆时针旋转180度的新Image图像'''
catCopyIm.rotate(180).save('rotate180.png')
'''逆时针旋转270度的新Image图像'''
catCopyIm.rotate(270).save('rotate270.png')
'''旋转6度'''
catCopyIm.rotate(6).save('roteat6.png')
'''expand设置为True'''
catCopyIm.rotate(6, expand=True).save('roteat6_expand.png')
'''水平翻转'''
catCopyIm.transpose(Image.FLIP_LEFT_RIGHT).save('horizontal_flip.png')
'''垂直翻转'''
catCopyIm.transpose(Image.FLIP_TOP_BOTTOM).save('vertrical_flip.png')
2 更改单个像素
单个像素的颜色可以通过getpixe()和putpixel()方法取得和设置。
它们都接受一个元组,表示像素的X和Y坐标。putpixel()方法还接受一个元组
作为该像素的颜色,这个颜色参数是四个整数RGBA元组或三整数RGB元组。
from PIL import Image
from PIL import ImageColor
'''200×200的透明正方形'''
im = Image.new('RGBA', (200, 200))
'''坐标调用'''
print(im.getpixel((0, 0)))
'''遍历上半部份的所有像素'''
for x in range(200):
for y in range(100):
'''设置每个像素的颜色'''
im.putpixel((x, y), (255,255,255))
for x in range(200):
for y in range(100,200):
'''假定不知道RGB元组,必须使用ImageColor.getcolor()'''
im.putpixel((x, y), ImageColor.getcolor('darkgray', 'RGBA'))
print(im.getpixel((0, 0)))
'''调用坐标'''
print(im.getpixel((0,100)))
'''保存图像'''
im.save('putpixel.png')