如何使用 pil 在 python 中制作颜色网格?
How to make a color grid in python using pil?
我是一个十足的菜鸟,想做一个10*10的颜色随机的网格。我的代码已经取得进展,但我无法继续前进。
import random
import uuid
from PIL import Image, ImageDraw
run_id = uuid.uuid1()
print(f'Processing run_id: {run_id}')
image = Image.new('RGB', (1600, 1600))
width, height = image.size
rectangle_width = 160
rectangle_height = 160
draw_image = ImageDraw.Draw(image)
for i in range(10):
rectangle_x = i*160
rectangle_y = 0
rectangle_shape = [
(rectangle_x, rectangle_y),
(rectangle_x + rectangle_width, rectangle_y + rectangle_height)]
draw_image.rectangle(
rectangle_shape,
fill=(
random.randint(0, 255),
random.randint(0, 255),
random.randint(0, 255)
)
)
image.save(f'./output/{run_id}.png')
这是我想要实现的,但颜色是随机的
运行 您的代码,您似乎只有一个单行循环(正方形顶部的行)。通过添加另一个 for 循环(遍历正方形中的每一行;用 j
表示),您可以为每一行绘制一个彩色正方形。
显示输出时,我得到了你的desired output
import random
import uuid
from PIL import Image, ImageDraw
run_id = uuid.uuid1()
print(f'Processing run_id: {run_id}')
image = Image.new('RGB', (1600, 1600))
width, height = image.size
rectangle_width = 160
rectangle_height = 160
draw_image = ImageDraw.Draw(image)
for i in range(10):
for j in range(10):
rectangle_x = i*160
rectangle_y = j*160
rectangle_shape = [
(rectangle_x, rectangle_y),
(rectangle_x + rectangle_width, rectangle_y + rectangle_height)]
draw_image.rectangle(
rectangle_shape,
fill=(
random.randint(0, 255),
random.randint(0, 255),
random.randint(0, 255)
)
)
image.save(f'./output/{run_id}.png')
image.show()
我认为这要容易得多:
#!/usr/bin/env python3
import numpy as np
from PIL import Image
# Generate 10x10 grid of random colours
grid = np.random.randint(0,256, (10,10,3), dtype=np.uint8)
# Make into PIL Image and scale up using Nearest Neighbour
im = Image.fromarray(grid).resize((1600,1600), resample=Image.NEAREST)
im.save('result.png')
我是一个十足的菜鸟,想做一个10*10的颜色随机的网格。我的代码已经取得进展,但我无法继续前进。
import random
import uuid
from PIL import Image, ImageDraw
run_id = uuid.uuid1()
print(f'Processing run_id: {run_id}')
image = Image.new('RGB', (1600, 1600))
width, height = image.size
rectangle_width = 160
rectangle_height = 160
draw_image = ImageDraw.Draw(image)
for i in range(10):
rectangle_x = i*160
rectangle_y = 0
rectangle_shape = [
(rectangle_x, rectangle_y),
(rectangle_x + rectangle_width, rectangle_y + rectangle_height)]
draw_image.rectangle(
rectangle_shape,
fill=(
random.randint(0, 255),
random.randint(0, 255),
random.randint(0, 255)
)
)
image.save(f'./output/{run_id}.png')
这是我想要实现的,但颜色是随机的
运行 您的代码,您似乎只有一个单行循环(正方形顶部的行)。通过添加另一个 for 循环(遍历正方形中的每一行;用 j
表示),您可以为每一行绘制一个彩色正方形。
显示输出时,我得到了你的desired output
import random
import uuid
from PIL import Image, ImageDraw
run_id = uuid.uuid1()
print(f'Processing run_id: {run_id}')
image = Image.new('RGB', (1600, 1600))
width, height = image.size
rectangle_width = 160
rectangle_height = 160
draw_image = ImageDraw.Draw(image)
for i in range(10):
for j in range(10):
rectangle_x = i*160
rectangle_y = j*160
rectangle_shape = [
(rectangle_x, rectangle_y),
(rectangle_x + rectangle_width, rectangle_y + rectangle_height)]
draw_image.rectangle(
rectangle_shape,
fill=(
random.randint(0, 255),
random.randint(0, 255),
random.randint(0, 255)
)
)
image.save(f'./output/{run_id}.png')
image.show()
我认为这要容易得多:
#!/usr/bin/env python3
import numpy as np
from PIL import Image
# Generate 10x10 grid of random colours
grid = np.random.randint(0,256, (10,10,3), dtype=np.uint8)
# Make into PIL Image and scale up using Nearest Neighbour
im = Image.fromarray(grid).resize((1600,1600), resample=Image.NEAREST)
im.save('result.png')