ImageMagick内存使用率

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

我有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:\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
添加到ImageMagick
convert
命令,如下所示:

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