使用pyvips按指定高度和宽度调整大小

6

我看到了这个回答,我想要使用pyvips来调整图片大小。在提到的回答和官方文档中,图像是按比例缩放的。然而,我想将图像调整为特定的高度和宽度。是否有办法用pyvips实现这一点?

2个回答

5

在pyvips中,缩略图操作会调整大小以适应一个区域。例如:

thumb = pyvips.Image.thumbnail("some-file.jpg", 128)

将加载some-file.jpg并生成一个适合128x128像素的高质量图像。

thumbnail的变种可以从字符串、缓冲区甚至管道中加载。

libvips文档有一vipsthumbnail章节,解释了如何使用(许多)选项。


缩略图操作是裁剪图像还是仅将其调整为所需大小? - d4riush
它会自动调整大小以适应框内。它还有一个模式,如果需要的话也会进行裁剪,但这不是默认设置。请查看文档。 - jcupitt

2

您可以使用更通用的affine函数。 仿射变换可以同时进行缩放旋转平移。您可以参数化仿射矩阵以进行0旋转和0平移。

首先计算实现目标形状所需的必要因素。

img = pyvips.Image.new_from_file("...")
height_factor = target_height / img.height
width_factor = target_width / img.width```

并通过应用它们

img.affine((width_factor, 0, 0, height_factor))

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