我正在尝试从一个巨大的图像创建瓷砖,比如 40000x40000
我在网上找到了一个用于 imagemagick 的脚本,他裁剪了瓷砖。它适用于像 10000x5000 这样的小图像
一旦我变得更大,它最终会使用大量内存并且计算机会死机。
我添加了限制选项,但它们似乎没有生效
我在那里有监视器,但它没有帮助,因为脚本只会减慢速度并锁定机器
它似乎只是吞噬了 50gig 的交换磁盘然后杀死了机器
我认为问题在于,当它裁剪每个图块时,它会将它们保存在内存中。我认为我需要的是它在创建时将每个图块写入磁盘,而不是将它们全部存储在内存中。
这是到目前为止的脚本
#!/bin/bash
file=$1
function tile() {
convert -monitor -limit memory 2GiB -limit map 2GiB -limit area 2GB $file -scale ${s}%x -crop 256x256 \
-set filename:tile "%[fx:page.x/256]_%[fx:page.y/256]" \
+repage +adjoin "${file%.*}_${s}_%[filename:tile].png"
}
s=100
tile
s=50
tile