如何将存储在文本文件中的十六进制颜色(或RGB,sRGB)列表转换为图像

时间:2016-07-20 09:15:19

标签: python imagemagick processing

我有一份约。我希望将1000个十六进制颜色转换成具有这些颜色的图像(例如正方形或矩形网格)。有没有一种简单的方法可以在Imagemagick(或任何其他软件:例如Processing / Python)中实现这一点。

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

代码在python中 您可以使用以下步骤:

  1. 将您的列表转换为numpy数组

    将numpy导入为np

    myarray = np.asarray(mylist)

  2. 使用scipy保存刚刚创建的numpy数组

    来自scipy.misc import toimage

    rgb = scipy.misc.toimage(myarray)

    toimage(RGB).show()

  3. 注意: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)

我会像这样使用bashImageMagick

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)

你会得到这个:

enter image description here

如果您希望方块大于其当前大小1x1,只需更改convert命令以指定方块的大小,即10x10:

while read h; do 
   convert -size 10x10 xc:"$h" miff:- 
done < colours | montage -geometry +0+0 miff:- result.png

答案 2 :(得分:0)

您已使用标记对其进行了标记,因此以下是处理解决方案:

第1步:加载文件。您可以使用loadStrings()函数。这会为您提供一组String值,在您的情况下将保存十六进制值。更多信息可以在the reference找到。

第2步:循环显示这些十六进制值。使用常规for循环或增强型for循环。

第3步:使用String功能将每个十六进制int转换为unhex()颜色。这会为您提供int,可以传递给任何颜色函数,例如fill()。更多信息可以在the reference找到。

第4步:使用这些颜色绘制图像。您还没有说过文件中的行如何映射到屏幕上的坐标,因此您必须执行该映射。然后只需更改填充颜色并在该坐标处绘制一个矩形。

很难回答一般的“我该怎么做”类型的问题,而不是指向the reference并告诉你将问题分解为更小的步骤并尝试一些事情。然后,如果你遇到其中一个特定的步骤,你可以问一个更具体的“我试过X,期望Y,但得到Z而不是”类型问题,这更像Stack Overflow的设计目的。祝你好运。