Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将存储在文本文件中的十六进制颜色(或RGB、sRGB)列表转换为图像_Python_Imagemagick_Processing - Fatal编程技术网

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

Python 如何将存储在文本文件中的十六进制颜色(或RGB、sRGB)列表转换为图像,python,imagemagick,processing,Python,Imagemagick,Processing,我有一个大约1000个十六进制颜色的列表,我想将其转换成一个填充有这些颜色的图像(例如,正方形或矩形网格)。在Imagemagick(或任何其他软件:例如Processing/Python)中是否有一种简单的方法来实现这一点 感谢您的帮助代码是用python编写的 您可以使用以下步骤: 将列表转换为numpy数组 将numpy作为np导入 myarray=np.asarray(mylist) 使用scipy保存刚刚创建的numpy数组 从scipy.misc导入到图像 rgb=scipy.mis

我有一个大约1000个十六进制颜色的列表,我想将其转换成一个填充有这些颜色的图像(例如,正方形或矩形网格)。在Imagemagick(或任何其他软件:例如Processing/Python)中是否有一种简单的方法来实现这一点

感谢您的帮助

代码是用python编写的 您可以使用以下步骤:

  • 将列表转换为numpy数组

    将numpy作为np导入

    myarray=np.asarray(mylist)

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

    从scipy.misc导入到图像

    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:加载文件。您可以为此使用
    loadStrings()
    函数。这将为您提供一个
    String
    值数组,在您的情况下,该数组将保存十六进制值。更多信息可在中找到

    第2步:循环这些十六进制值。对循环使用常规的
    ,或对
    循环使用增强的

    步骤3:使用
    unhex()
    函数将每个十六进制
    字符串
    转换为
    int
    颜色。这将为您提供一个
    int
    ,它可以传递到任何颜色函数中,例如
    fill()
    。更多信息可在中找到

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


    很难回答一般的“我该怎么做”类型的问题,而不是指给你看,告诉你把问题分解成更小的步骤,然后试着做点什么。然后,如果您在其中一个特定步骤上遇到了困难,您可以问一个更具体的“我尝试了X,期望是Y,但得到了Z”类型的问题,这更符合堆栈溢出的设计目的。祝你好运。

    我会像这样使用
    bash
    ImageMagick

    while read h; do convert xc:"$h" miff:- ; done < colours | montage -geometry +0+0 miff:- result.png
    
    #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
    
    读取h时
    ;做
    转换-尺寸为10x10 xc:$h的miff:-
    完成
    非常感谢。我不知道为什么这样一个简洁的问题会被否决。这种情况发生的原因是随机的,如果有人试图投票否决某件事,他/她必须解释原因,这将是一件好事。否则,没有人会从这次经历中学到任何东西。@user413734请参阅我的答案的底部,以了解为什么你会获得否决票。长话短说:这个问题并不简洁。我很乐意笼统地回答,但这并不是构建堆栈溢出的目的。你是真正的大师。这正是我想要的,所有的一切都在一行。万分感谢,非常感谢!杰出的很高兴为您服务。顺便说一句,如果你知道你想要的话,比如说32块瓷砖的宽度和高度由正方形的数量决定,你可以使用
    蒙太奇-tile 32x…
    。同样,如果您想在页面下方使用特定数量的平铺,例如20,并且宽度随
    颜色
    文件中的行数而变化,您可以使用
    蒙太奇-平铺x20…
    再次感谢!我想知道我是否可以在打印之前对颜色进行排序,这样相似的颜色就彼此接近了。这个脚本非常有用。再次感谢。您可以这样做-在这里查看我的答案。您可以将此答案中的图像作为输入图像传递给链接答案。@MarkSetchell是否可以将颜色名称添加到框中?我正在使用showrgb命令中的名称。我试着使用标签和标题,文本显示出来,但一切都变成了黑白