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

How to Resize image and reduce DPI using Imagemagick in node

我正在尝试使用 package.js 同时调整图像大小和降低其 DPI。

我正在使用 im.convert() 而不是 im.resize() 因为我还有其他需要指定的选项。我试图将包含所有选项的数组传递给 im.convert(),但我收到一条错误消息 "Error: Command failed: Invalid Parameter - -units"

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

const outputPath= "E:\PC\lister\uploads\dbmid_AAAeU6UkAOHoUmq6t25RPjK6g1sfK6gn7fg\Clients\Matt\Web19-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 的调整大小的图像。但我收到一条错误消息 "Error: Command failed: Invalid Parameter - -units"

您错误地 运行 一个名为 CONVERT.EXE 的 Microsoft-supplied 程序将 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 window 中设置 PATH(我避免使用 Windows,但它类似于 Settings->Control Panel->System->Environment Variables->PATH) 并使包含 ImageMagick 的目录位于最前面,这样 Windows 在它自己的 CONVERT.EXE 之前找到 ImageMagick:

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