答案 0 :(得分:2)
Fred在他的网站上有一个Imagemagick脚本,可以做你想做的事:STAINEDGLASS
答案 1 :(得分:1)
这是一种可行的方法,但我确信如果您能够编写代码来读取,操作和使用尚未发明的文件格式的像素,您应该能够创建提交自己; - )
您可以使用 ImageMagick 生成六边形网格,该网格安装在大多数Linux发行版上,可用于OSX和Windows。在这里,我只是在终端的命令行中做事,但是有Python,Perl,PHP,.Net,C / C ++和其他绑定 - 所以请你选择。
首先制作一个六边形网格 - 你必须计算出你需要的尺寸,我的是任意的:
convert -size 512x256 pattern:hexagons hexagons.png
现在,填写六边形,每个都有不同的颜色,我只是在这里做一些充满洪水的例子给你的想法。理想情况下,您可以使用颜色#000
为第一个(左上角)六边形着色,然后使用#001
对下一个六边形进行着色,以便您可以将输出图像的坐标作为连续颜色进行迭代。此外,根据您的输出图像大小,您可能需要使用32位PNG来容纳六边形(六边形像素)的数量。
convert hexagons.png \
-fill red - draw "color 100,100 floodfill" \
-fill blue -draw "color 200,200 floodfill" \
colouredmask.png
现在迭代所有颜色,使每个颜色除颜色透明。请注意,我添加了一个黑色边框,以便您可以在StackOverflow的白色背景上看到上下文:
convert colouredmask.png -fill none +opaque red onecell.png
现在使用该掩码屏蔽原始图像并获取该单元格的平均颜色,并将其写入您尚未发明的文件格式。重复所有细胞/颜色。
请注意,基本的六边形图案是30x18,因此您应该将网格的大小调整为其正确的倍数。
请注意,如果要处理大量这些内容,则应考虑使用 GNU Parallel 之类的内容来利用多个内核。因此,如果您创建一个名为ProcessOneImage
的脚本,并且您要执行2,000个图像,则可以使用:
parallel ProcessOneImage ::: *.png
如果您的PC有8个内核,它将保持8个作业始终在运行。还有更多选项,请尝试man parallel
。
答案 2 :(得分:0)