首页 > 解决方案 > 如何在节点中使用 Imagemagick 调整图像大小并减少 DPI

问题描述

我正在尝试使用包一次调整图像大小并降低其 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”

标签: javascriptnode.jsimage-processingimagemagickgraphicsmagick

解决方案


您错误地运行了一个 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。您可以通过显式运行完整的ImageMagickconvert命令来做到这一点,因此您可以使用大致如下所示的完整路径而不是普通路径:

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

或者您PATH在某个 GUI 窗口中设置您的(我避免使用 Windows,但它类似于Settings-> Control Panel-> System-> Environment Variables-> PATH)并使其包含 ImageMagick 的目录位于最前面,因此 Windows 在其自己之前找到 ImageMagick CONVERT.EXE

PATH=C:\ImageMagick\ImageMagick-6.7.6:<REST OF PATH>

推荐阅读