我想连接八个png图片,每个在21600px x 21600px的大小在4x2图片的形式使用windows中的任何程序。尝试ImageMagick或GraphicsMagick会导致错误(由于任何尺寸的限制为65500px )。
我也用gimp尝试过,但它对我的电脑(和gimp)来说太多了。我更喜欢轻量级程序,甚至是命令行程序。你有什么建议吗?
发布于 2017-11-04 22:28:25
你可以试试libvips。它是一个流式图像处理库--它可以同时解压缩、处理和重新压缩,所以你只需要足够的内存来处理实际正在处理的一小块像素。
您可以从命令行连接映像,如下所示:
vips arrayjoin "1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png" x.png --across 4它将生成x.png,这是将8个源图像连接到一个网格中的结果,其中有4个图像。图像是从左到右和从上到下排列的,所以你会得到:
1 2 3 4
5 6 7 8 在这台笔记本电脑上,我看到:
$ time vips arrayjoin "1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png" x.png --across 4
real 5m38.236s
user 7m9.735s
sys 0m2.851s
peak res 249mb
$ vipsheader x.png
x.png: 74976x37488 uchar, 3 bands, srgb, pngload因此,它在大约5分钟和250mb的内存中制作了一个70k x 40k像素的png。您会发现大部分时间都花在了libpng压缩上-- tiff格式的速度至少要快三到四倍。
在Windows上,arrayjoin可以在一次操作中连接大约2,000个图像。不仅如此,你还需要分阶段进行组装。
您可以从以下位置下载Windows二进制文件:
https://github.com/jcupitt/libvips/releases
arrayjoin的文档如下:
http://jcupitt.github.io/libvips/API/current/libvips-conversion.html#vips-arrayjoin
它有网格布局和对齐的选项,这可能是有用的。
发布于 2017-11-15 15:44:34
感谢您的想法!最后我把图片和vips连接起来,主要的问题实际上是显示图片,因为第一台计算机没有足够的RAM (16 GB)。它总是显示最终的图片( 86'400 x 21'600像素),在底部有一条黑线(像这样的https://ibb.co/bPGHnb)
为了显示图片,我使用了一台内存为32 GB的计算机。Magick无法显示它,因为它无法分配足够的RAM。但irfantview最终还是成功了。
发布于 2017-11-01 06:40:20
如果限制不是来自PNG,您的ImageMagick policy.xml文件可能允许您创建更大的图像。请参阅http://www.imagemagick.org/source/policy.xml
<policy domain="resource" name="width" value="10MP"/>
<policy domain="resource" name="height" value="10MP"/>
<policy domain="resource" name="area" value="100MP"/> 使用:
convert -list resource告诉你你现在的价值是什么。例如,我得到
convert -list resource
Resource limits:
Width: 214.7MP
Height: 214.7MP
Area: 17.18GP
Memory: 8GiB
Map: 16GiB
Disk: unlimited
File: 192
Thread: 4
Throttle: 0
Time: unlimited但是,如果您没有足够的RAM来容纳该大小的结果图像和输入图像。您可能必须使用policy.xml文件来映射到磁盘,尽管这样会更慢。
4*21600 = 86400。所以在你的宽度限制下,你需要大约87M像素的宽度。
您的面积需要是8*21600*21600 = 3732480000或大约3.7M像素的面积。
还有8images*24Bytes*21600*21600=89579520000字节或大约90 GB,输入和输出数据都需要加倍。我怀疑这可能比你的内存大。
请注意,即使您的PNG是压缩的,ImageMagick也必须在处理之前将其解压缩。
https://stackoverflow.com/questions/47044353
复制相似问题