使用PIL转换图像

6

我该如何使用PIL库和Python将一张图片沿着上下左右四个方向中的一个方向平移5个像素?我看到可以使用im.transform(size, AFFINE, data)方法,但是我不知道具体怎么操作。


你想要什么样的输出?你希望图片环绕吗?你能展示一下你想要的图片样式以及你已经尝试过的方法吗? - Håken Lid
不需要让图像环绕。空白区域应该是黑色的。 - RaviTej310
1个回答

20

Image.transform(size, method, data) 方法中,当 method=Image.AFFINE 时,会返回一张应用仿射变换矩阵的图像副本。仿射变换矩阵通过元组 (a, b, c, d, e, f) 表示,可以通过参数 data 传入。对于每个像素点 (x, y),输出将按照公式 (ax+by+c, dx+ey+f) 计算得出。因此,如果你想要应用平移变换,只需查看矩阵中的 cf 值即可。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接