javascript - 如何在节点中使用 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”
解决方案
您错误地运行了一个 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>
推荐阅读
- javascript - 为什么我的 brain.js LSTM 脚本没有从 script 标签中指定的 URL 加载?
- sql - ms-access SQL 链接工作表行顺序保留
- java - 如何通过 Selenium WebDriver (Java API) 在 web 视图中查找 web 元素?
- type-conversion - 将表示列表的字符串转换为 Jython 中的实际列表?
- c++ - 循环展开和 SSE——clang 与 gcc
- javascript - 如果数据库有变化,刷新页面
- node.js - JS加载后获取页面的HTML内容
- c++ - Emacs - ccls:命名空间“std”中没有名为“filesystem”的成员
- julia - 如何在 Julia 中初始化摘要?
- html - Heroku:在应用程序启动时显示自定义页面