操作图像4-pillow-旋转,翻转图像、更改单个元素

1旋转、翻转图像

图像可以用rotate()方法旋转,该方法返回旋转后的新Image对象,并保持原始Image对象不变。rotate()的参数是一个整数或浮点数,
表示图像逆时针旋转的度数。
操作图像4-pillow-旋转,翻转图像、更改单个元素_第1张图片

操作图像4-pillow-旋转,翻转图像、更改单个元素_第2张图片

操作图像4-pillow-旋转,翻转图像、更改单个元素_第3张图片

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上,
使用黑色的背景来填补旋转造成的缝隙


操作图像4-pillow-旋转,翻转图像、更改单个元素_第4张图片

操作图像4-pillow-旋转,翻转图像、更改单个元素_第5张图片

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。

操作图像4-pillow-旋转,翻转图像、更改单个元素_第6张图片

操作图像4-pillow-旋转,翻转图像、更改单个元素_第7张图片

'''水平翻转'''
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元组。

操作图像4-pillow-旋转,翻转图像、更改单个元素_第8张图片

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')

你可能感兴趣的:(python3编程)