我该如何使用PIL库和Python将一张图片沿着上下左右四个方向中的一个方向平移5个像素?我看到可以使用im.transform(size, AFFINE, data)
方法,但是我不知道具体怎么操作。
我该如何使用PIL库和Python将一张图片沿着上下左右四个方向中的一个方向平移5个像素?我看到可以使用im.transform(size, AFFINE, data)
方法,但是我不知道具体怎么操作。
Image.transform(size, method, data)
方法中,当 method=Image.AFFINE
时,会返回一张应用仿射变换矩阵的图像副本。仿射变换矩阵通过元组 (a, b, c, d, e, f)
表示,可以通过参数 data
传入。对于每个像素点 (x, y)
,输出将按照公式 (ax+by+c, dx+ey+f)
计算得出。因此,如果你想要应用平移变换,只需查看矩阵中的 c
和 f
值即可。
from PIL import Image
img = Image.new('RGB', (100, 100), 'red')
a = 1
b = 0
c = 0 #left/right (i.e. 5/-5)
d = 0
e = 1
f = 0 #up/down (i.e. 5/-5)
img = img.transform(img.size, Image.AFFINE, (a, b, c, d, e, f))
img.save('image.png')