Kar*_*l S 8 tiff imagemagick image-manipulation
我需要创建和拆分多页 TIFF 图像,范围从 2 页到近 100 页(A4、300 dpi、2500×3500 像素)。该作业由 x64 Linux 服务器上的脚本定期执行。目前我正在使用 Imagemagick。较小的情况不会造成任何问题,但较大的情况会造成任何问题。
我需要从根本上减少操作期间使用的内存量。
例如,这个:
convert *.jpg -compress lzw output.tif
Run Code Online (Sandbox Code Playgroud)
(70 个 jpeg 文件)消耗大约 4.6 GB 的 RAM,即使每个输入小于 2MB,生成的文件也小于 250MB。
反向操作:
convert input.tif output-%04d.png
Run Code Online (Sandbox Code Playgroud)
有类似的问题。
从我所读到的,发生这种情况是因为 Imagemagick 首先加载和解码所有输入图像,然后才开始将它们编码到输出文件中。
如何在没有如此巨大内存占用的情况下创建和拆分多页 TIFF 图像?我不一定非要使用 ImageMagick,任何其他免费工具都可以。
小智 6
我今天在尝试拆分 1700 图像、1G tif 文件时遇到了同样的问题。16G 的内存不够用,然后尝试将其缓存在磁盘上,但速度很慢,而且很容易在硬盘上耗尽 100G 以上的内存而没有完成任何事情(这可能是一个错误)。
但显然 ImageMagick 可以从原始文件中提取特定的 tif 文件而无需完全加载它,因此能够使用简单的 bash 脚本拆分更大的文件:
subfiles=$(identify -quiet -format '%n\n' largefile.tif | head -n1)
for (( i = 0; i < subfiles; i++ )); do
convert largefile.tif[$i] -scene 1 split/smallerfile_$i.tif
done
Run Code Online (Sandbox Code Playgroud)
不知道如何在不耗尽内存的情况下创建一个大文件,所以这可能是答案的一半?
| 归档时间: |
|
| 查看次数: |
9286 次 |
| 最近记录: |