网格中的 Python 颜色代码值并导出为 jpg

标签 python python-imaging-library

所以我有一个生成的网格,我希望该网格中的每个值代表一种颜色。 这是生成代码:

for row in self.grid:
        for item in range(len(row)):
            row[item] = random.randint(-10, 20)

例如,我有这个网格:

[1, -7, 20, 12, 6, 5, 11, -1, -3, 8]
[18, 10, 2, -3, -4, 5, 10, 12, 10, -6]
[11, 19, 8, 2, -8, 5, -4, -4, 16, 1]
[-7, -7, 11, 13, -6, -8, 0, 10, 14, 9]
[16, 16, 1, 8, -7, 19, 9, 20, 2, 2]
[-3, 2, 4, 16, 20, -4, -1, -10, 19, 4]
[9, -9, 11, 5, 7, -7, 5, 15, -1, -6]
[11, -5, -2, -9, 19, -7, 14, -3, -8, -8]
[1, 13, 19, 9, 13, 7, 9, 11, -3, 19]
[15, -3, -10, 13, 2, 6, -7, -8, -6, 15]

我希望每个值(即范围的一部分)对应于某种颜色。例如,从 1 到 5 的范围为绿色。 之后将其导出到 jpg 图像,我认为获胜者将是 PIL 但我不太确定如何继续。

最佳答案

这是一个我认为可以满足您需求的实现。请注意,当图像以 JPEG 格式保存时,颜色会发生变化。

import random

from PIL import Image

COLOUR_MAP = {
    range(-10, 0): (255, 0, 0),
    range(0, 10): (0, 255, 0),
    range(10, 21): (0, 0, 255)
}


def create_grid(n):
    return [[random.randint(-10, 20) for _ in range(n)] for _ in range(n)]


def map_to_colour(x):
    for r, c in COLOUR_MAP.items():
        if x in r:
            return c
    else:
        raise ValueError(x)


def map_values_to_colours(value_grid):
    return [[map_to_colour(x) for x in row] for row in value_grid]


def draw_image_from_colour_grid(colour_grid):
    im = Image.new(mode='RGB', size=(len(colour_grid), len(colour_grid[0])))
    im.putdata([x for row in colour_grid for x in row])
    im.show()
    im.save('out.jpg', 'JPEG')


if __name__ == '__main__':
    value_grid = create_grid(10)
    colour_grid = map_values_to_colours(value_grid)
    draw_image_from_colour_grid(colour_grid)

输出

关于网格中的 Python 颜色代码值并导出为 jpg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41877085/

相关文章:

python - tkinter 中的 Windows 终端仿真器

python - 通过 paramiko 加载 .bashrc 的 ssh

image - Python - 如何将列表保存为图像?

python - 关闭文件的 I/O 操作 : Django Imagekit & Pillow

python - Django 虽然已安装但找不到 Pillow

python - 线性拟合 python 错误

python - 国际化 Django(在 OSX 上)

python - python 中的行 n= n 和 int(n) 是什么意思

用于多图像 TIFF 的 Python PIL For Loop

python - 如何将 Pillow EPS 调整为 JPG 质量