如何在节点中使用Imagemagick调整图像大小并减少DPI

时间:2019-06-10 04:14:21

标签: javascript node.js image-processing imagemagick graphicsmagick

我正在尝试使用软件包立即调整图像大小并减小其DPI。

我使用的是im.convert()而不是im.resize(),因为我还有其他一些需要指定的选项。我试图将具有所有选项的数组传递给im.convert(),但出现一个错误,提示“错误:命令失败:参数无效--units”

const inputPath = "E:\PC\lister\uploads\dbmid_AAAeU6UkAOHoUmq6t25RPjK6g1sfK6gn7fg\Clients\Matt\2019-06-10T03-32-02.385Z45.jpg";'

const outputPath= "E:\PC\lister\uploads\dbmid_AAAeU6UkAOHoUmq6t25RPjK6g1sfK6gn7fg\Clients\Matt\Web\2019-06-10T03-32-02.385Z45.jpg";
const args = [
    inputPath,
    "-units",
    "pixelsperinch",
    "-density",
    "75x75",
    "-resize",
    "1920",
    outputPath
]
im.convert(args, function(err, stdout, stderr) {
    if(err) console.log(err)

});

我期望在上面的outputPath中指定的名为“ web”的文件夹中以75dpi调整尺寸的图像。但我收到一条错误消息,提示“错误:命令失败:参数无效--units”

1 个答案:

答案 0 :(得分:2)

您错误地运行了Microsoft提供的名为CONVERT.EXE的程序,该程序将FAT文件系统转换为NTFS(或类似的东西),而不是您想要的 ImageMagick 命令。根据要使用的 ImageMagick 的版本,解决方案可能会有所不同。


如果要使用 ImageMagick v7(这是最好且明智的主意),则命令已更改如下:

Old v6 command |  New v7 command
===============|================
identify       | magick identify
animate        | magick animate
montage        | magick montage
convert        | magick
mogrify        | magick mogrify    

因此,您需要将Javascript更改为使用magick而不是convert


如果要使用v6 ImageMagick ,则需要继续使用convert,但要确保Windows找到的是 ImageMagick convert,而不是Windows C:\WINDOWS\SYSTEM32\CONVERT.EXE。您可以通过显式运行完整的 ImageMagick 命令来执行此操作,因此,您可以使用看起来像这样的完整路径来代替普通的convert

C:\ImageMagick\ImageMagick-6.7.6\convert ...

或者您在某个GUI窗口中设置PATH(我避免使用Windows,但这类似于Settings-> Control Panel-> System-> {{1} }-> Environment Variables)并将其放置在包含ImageMagick的目录的最前面,以便Windows在其自己的PATH之前找到ImageMagick:

CONVERT.EXE