我有一份约。我希望将1000个十六进制颜色转换成具有这些颜色的图像(例如正方形或矩形网格)。有没有一种简单的方法可以在Imagemagick(或任何其他软件:例如Processing / Python)中实现这一点。
感谢您的帮助
答案 0 :(得分:1)
代码在python中 您可以使用以下步骤:
将您的列表转换为numpy数组
将numpy导入为np
myarray = np.asarray(mylist)
使用scipy保存刚刚创建的numpy数组
来自scipy.misc import toimage
rgb = scipy.misc.toimage(myarray)
toimage(RGB).show()
注意:Scipy需要预先安装PIL。
没有Scipy的另一个解决方案如下,但您需要根据需要进行修改。你需要PIL在这里:
import Image
import numpy as np
data = np.random.random((500,500))
#Rescale to 0-255 and convert to uint8
rescaled = (255.0 / data.max() * (data - data.min())).astype(np.uint8)
im = Image.fromarray(rescaled)
im.save('testing.png')
答案 1 :(得分:1)
我会像这样使用bash
和ImageMagick
:
while read h; do convert xc:"$h" miff:- ; done < colours | montage -geometry +0+0 miff:- result.png
因此,如果您的文件colours
如下所示:
#000000
#ffffff
#ff0000
#00ff00
#0000ff
pink
yellow
navy
rgb(128,128,128)
rgb(64,64,64)
rgb(200,200,200)
你会得到这个:
如果您希望方块大于其当前大小1x1,只需更改convert
命令以指定方块的大小,即10x10:
while read h; do
convert -size 10x10 xc:"$h" miff:-
done < colours | montage -geometry +0+0 miff:- result.png
答案 2 :(得分:0)
您已使用processing标记对其进行了标记,因此以下是处理解决方案:
第1步:加载文件。您可以使用loadStrings()
函数。这会为您提供一组String
值,在您的情况下将保存十六进制值。更多信息可以在the reference找到。
第2步:循环显示这些十六进制值。使用常规for
循环或增强型for
循环。
第3步:使用String
功能将每个十六进制int
转换为unhex()
颜色。这会为您提供int
,可以传递给任何颜色函数,例如fill()
。更多信息可以在the reference找到。
第4步:使用这些颜色绘制图像。您还没有说过文件中的行如何映射到屏幕上的坐标,因此您必须执行该映射。然后只需更改填充颜色并在该坐标处绘制一个矩形。
很难回答一般的“我该怎么做”类型的问题,而不是指向the reference并告诉你将问题分解为更小的步骤并尝试一些事情。然后,如果你遇到其中一个特定的步骤,你可以问一个更具体的“我试过X,期望Y,但得到Z而不是”类型问题,这更像Stack Overflow的设计目的。祝你好运。