1

我正在使用带有 Nodejs 的 imagemagick 模块

im  = require('imagemagick');

imagemagick 模块使用 imagemagick 命令行工具。我使用 convert 方法裁剪图像

im.convert([image_path, '-crop', '200x150', '-gravity', 'center', target_path],
  function(err, stdout){}
);

这会产生两个图像。一个带有裁剪的图像区域 - 第二个带有我试图摆脱的图像垃圾。

如何强制 imagemagick 只输出一个图像文件?

4

2 回答 2

2

根据用于裁剪的imagemagick 文档,这无疑有点迟钝(添加了重点):

几何参数的宽度和高度给出了裁剪后图像的大小,偏移量(如果存在)中的 x 和 y 给出了裁剪图像的左上角相对于原始图像的位置

...

如果存在 x 和 y 偏移,则生成单个图像,由裁剪区域的像素组成。

...

如果省略 x 和 y 偏移,则生成一组指定几何图形的图块,覆盖整个输入图像。

...因此,您只需将您的xy偏移量指定为几何参数的一部分,如下所示:200x150-100-75

请注意,我已经为您的裁剪区域的左上角指定了-100和,这是因为您将您设置为,但似乎 imagemagick 试图根据您的重力智能地确定适当的距离目标,而我看不到当您选择时它的行为方式。因此,您可能需要稍微尝试一下,或者您可以省略并使用原始图像左上角的实际偏移量。-75gravitycentercentergravity

于 2014-05-13T14:00:40.690 回答
0

我不得不使用该+delete参数从图像序列中删除最后一张图像。

im.convert([image_file.path, '-crop', geometry, '+delete', thumb_path], ...
于 2014-05-13T13:59:17.777 回答