ImageMagick内存使用率
我有100个PNG文件,每个都是8250x4090大的。我需要用Imagemagick将它们附加到一个大的PNG文件(82500 x 40900)中,这样我就有10行10列。我知道代码必须是什么样子,但我得到了错误:convert.exe:无法扩展缓存ImageMagick内存使用率,imagemagick,imagemagick-convert,Imagemagick,Imagemagick Convert,我有100个PNG文件,每个都是8250x4090大的。我需要用Imagemagick将它们附加到一个大的PNG文件(82500 x 40900)中,这样我就有10行10列。我知道代码必须是什么样子,但我得到了错误:convert.exe:无法扩展缓存 `C:\Row_345.png': No space left on device @ error/cache.c/OpenPixelCache/3689. convert.exe: Memory allocation failed `C:\Ro
`C:\Row_345.png': No space left on device @ error/cache.c/OpenPixelCache/3689.
convert.exe: Memory allocation failed `C:\Row_345.png' @ error/png.c/WriteOnePNGImage/8725.
第一个问题:大约需要多少空间?我有8 GB的Ram和30 GB的空闲SSD,这还不够。这些图片有最多5种不同颜色的多边形和线条。最大的PNG为300KB)
第二个问题:有没有办法让它更聪明,这样就不会占用那么多空间 试着一次只做一行10次,10次-这样你就得到10行10次。然后执行第1行和第2行。然后是第1行和第2行加上第3行
convert 1.png 2.png 3.png ... +append row1.png
convert 11.png 12.png 13.png ... +append row2.png
...
convert 91.png 92.png 93.png ... +append row10.png
然后
您可以将-debug cache
添加到ImageMagickconvert
命令,如下所示:
convert -debug cache 1.png 2.png 3.png ... +append row1.png
identify -list resource
File Area Memory Map Disk Thread Time
-------------------------------------------------------------------------------
768 1.0386GB 3.8692GiB 7.7384GiB unlimited 4 unlimited
convert -limit memory 32MiB ...
您还可以查看您的资源设置,了解ImageMagick可用的内容,如下所示:
convert -debug cache 1.png 2.png 3.png ... +append row1.png
identify -list resource
File Area Memory Map Disk Thread Time
-------------------------------------------------------------------------------
768 1.0386GB 3.8692GiB 7.7384GiB unlimited 4 unlimited
convert -limit memory 32MiB ...
增加这样的资源:
convert -debug cache 1.png 2.png 3.png ... +append row1.png
identify -list resource
File Area Memory Map Disk Thread Time
-------------------------------------------------------------------------------
768 1.0386GB 3.8692GiB 7.7384GiB unlimited 4 unlimited
convert -limit memory 32MiB ...
如果使用Q16版本,ImageMagick需要每像素8字节。Q8版本每像素只需要4个字节 82500*40900*8=约27GB 82500*40900*4=约13.5 GB PNG的大小无关紧要;ImageMagick以未压缩的方式存储它们
可能ImageMagick正在尝试保存两个副本——100个小图像加上大结果。可能是因为您有足够的内存和磁盘来运行ImageMagick-Q8转换。我对行也有想法,但仍然有相同的错误。我将尝试调试缓存和限制内存,谢谢!所以我不得不结合你和格伦·兰德斯·佩尔森的答案来解决我的问题。我必须接受哪一个答案?和格伦一起去-我相信他会很高兴得到他的2000分!谢谢我把你的答案和马克·塞切尔的答案结合起来,结果成功了。但有一个问题:Q8是否有质量下降或类似的缺点?一般来说,Q8不会像Q16那样准确。但是对于特定的操作,包括“-append”,如果原始PNG文件的位深度==8或更少,它应该是无损的。我必须承认,我不知道如何找出PNG文件的位深度。你认为这个()的深度有点8吗?你会没事的-你只有4种颜色:-)像这样自己检查
identification-verbose image.png