Python 如何将存储在文本文件中的十六进制颜色(或RGB、sRGB)列表转换为图像
我有一个大约1000个十六进制颜色的列表,我想将其转换成一个填充有这些颜色的图像(例如,正方形或矩形网格)。在Imagemagick(或任何其他软件:例如Processing/Python)中是否有一种简单的方法来实现这一点 感谢您的帮助代码是用python编写的 您可以使用以下步骤: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
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命令中的名称。我试着使用标签和标题,文本显示出来,但一切都变成了黑白