使用Python图像库进行缩放

7 投票
2 回答
8539 浏览
提问于 2025-04-16 02:03

我正在用Python写一个简单的应用程序,用来显示图片。我需要实现放大和缩小功能,也就是通过缩放图片来达到这个效果。
我觉得可以用Image.transform这个方法来实现,但我不太确定怎么用,因为它需要一个仿射矩阵之类的东西 :P
下面是文档中的一段引用:

im.transform(size, AFFINE, data, filter) => image

这个方法会对图片进行仿射变换,然后把结果放到一个指定大小的新图片里。

数据是一个6个数字的元组(a, b, c, d, e, f),它包含了仿射变换矩阵的前两行。对于输出图片中的每一个像素(x, y),新的值是从输入图片中的一个位置(a x + b y + c, d x + e y + f)获取的,并且会四舍五入到最近的像素。

这个函数可以用来缩放、平移、旋转和剪切原始图片。

2 个回答

0

仿射变换是一种先进行线性变换,然后再进行平移的操作。不过,如果你只是想调整图像的一部分大小,其实只需要用到调整大小的方法就可以了。下面的链接里有一些示例代码,可以参考一下:

6

你使用EXTENT方法会比AFFINE方法好得多。你只需要计算两件事:你想看到输入的哪一部分,以及它应该有多大。比如说,如果你想把整个图像缩小到一半的大小(也就是放大缩小2倍),你可以传入数据(0, 0, im.size[0], im.size[1])和大小(im.size[0]/2, im.size[1]/2)。

撰写回答