from PIL import Image
from matplotlib import pyplot as plt
im=Image.open('/data/demo/L1020120.JPG')
o = im.resize((128, 128))
outfile= o.rotate(45)
plt.imshow(outfile)
plt.show()
要以90度为单位旋转图像,可以使用 rotate()
或 transpose()
方法。后者也可用于围绕其水平轴或垂直轴翻转图像。
FLIP_LEFT_RIGHT
水平左右翻转Image.FLIP_TOP_BOTTOM
垂直上下翻转Image.ROTATE_90
逆时针90度Image.ROTATE_180
逆时针180度Image.ROTATE_270
逆时针270度
更多的api
可以查看官方文档和源码。
im=Image.open('/data/demo/L1020120.JPG')
box = (100, 100, 400, 500)
region = im.crop(box)
plt.imshow(region)
plt.show()
region = region.transpose(Image.ROTATE_180)
定义要粘贴的位置。
box = (100, 100, 400, 500)
将子图(region) 粘贴(paste)回原图时,粘贴位置 box
的像素与宽高必须吻合。而原图和子图的 mode
不需要匹配,Pillow会自动处理。
im.paste(region, box)
plt.imshow(im)
plt.show()
region = region.transpose(Image.ROTATE_180)
box = (200, 200, 500, 600)
im.paste(region, box)
plt.imshow(im)
plt.show()
image_path = '/data/demo/L1020120.JPG'
im = Image.open(image_path)
设置想要偏转的像素值。
delta=200
xsize, ysize = im.size
print(im.size)
(1000, 734)
移动图片通常都是在X轴的方向上进行处理,设置的偏移值为200个像素, 比X轴的值小所以可以直接处理,但是如果是移动2000个像素呢,可能就会出现错误, 所以对他进行求余处理,也就是将图片移动了多个周期,依旧是2000时, 而需要移动的就是144个像素。
delta = delta % xsize
if delta == 0:
plt.imshow(im)
plt.show()
将确定好的位置复制下来,在重新组成一幅图片,视觉上看就像是图片在移动。
part1 = im.crop((0, 0, delta, ysize))
part2 = im.crop((delta, 0, xsize, ysize))
im.paste(part1, (xsize - delta, 0, xsize, ysize))
im.paste(part2, (0, 0, xsize - delta, ysize))
plt.imshow(im)
plt.show()