【发布时间】:2021-04-13 03:42:02
【问题描述】:
我有一个非常大的 JPEG 图像 (10800x7497),我想将其调整为分辨率的 50%。我已经使用-define jpeg:colors=64 将图像颜色减少到 64 种颜色,但是当我尝试调整图像大小时,ImageMagick 需要很长时间来处理图像,可能需要 20 分钟或更长时间(因为我在没有输出图像时停止了处理保存在 20 分钟内,尽管任务管理器显示 ImageMagick 正在处理图像)。如何加快调整这个大图像的大小?我已经尝试了以下代码,但仍然需要很长时间:
magick -define jpeg:size=10800x7500 "image1.jpg" -resize 5400x3750 "image1-resized.jpg"
magick -define jpeg:size=5400x3750 "image1.jpg" -resize 5400x3750 "image1-resized.jpg"
magick -depth 5 "image1.jpg" -resize 50% "image1-resized.jpg"
【问题讨论】:
-
尝试运行
magick identify -version以查看您是否有 Q8 或 Q16。如果您有 Q16,您可以尝试安装/构建 Q8 版本以减少内存压力。如果您有可用的 SSD 和 NTFS 文件系统,您可以将 ImageMagick 临时路径环境变量指向它以加快磁盘访问速度。 -
或者您可以安装
libvips并可能在很短的时间内完成。 -
在我的 PC (Core I5) 上调整大小(充满随机噪声)在 6 CPU 秒(使用 SSD 时经过 10 秒)内运行的图像大小。即使在慢速磁盘上交换,20 分钟也很多。您的系统监视器对 IM 进程有何看法?什么记忆?输入/输出率?什么是磁盘活动?请注意,减少输出大小的最佳方法是模糊图像,据我所知,减少颜色计数会增加最终大小。您还可以更改压缩质量和色度二次采样。
-
如果你想尝试使用
libvips,你可以使用vipsthumbnail big.jpg -s 5400 -o small.jpg,它在我的机器上使用了220MB的峰值内存,而ImageMagick使用了近2GB和1.6s而不是6 秒。 -
检查您的 Imagemagick RAM 资源并在 policy.xml 文件中增加它们。
标签: command-line imagemagick image-resizing imagemagick-convert