You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python的PIL库生成10×10随机颜色网格?

解决10×10随机颜色网格的问题

嘿,你现在的代码只生成一行网格的原因很简单——你把rectangle_y固定成了0,所以所有矩形都画在了第一行的位置上。要生成10×10的网格,我们只需要添加一个嵌套循环,分别控制行(垂直方向)和列(水平方向)的位置就行。

修改后的完整代码

import random
import uuid
from PIL import Image, ImageDraw

run_id = uuid.uuid1()
print(f'Processing run_id: {run_id}')

# 画布尺寸和单个矩形的尺寸
canvas_size = (1600, 1600)
rect_size = (160, 160)
grid_rows = 10
grid_cols = 10

image = Image.new('RGB', canvas_size)
draw_image = ImageDraw.Draw(image)

# 外层循环处理每一行(y轴方向)
for row in range(grid_rows):
    # 计算当前行的y坐标起始位置
    rectangle_y = row * rect_size[1]
    # 内层循环处理当前行的每一列(x轴方向)
    for col in range(grid_cols):
        rectangle_x = col * rect_size[0]
        rectangle_shape = [
            (rectangle_x, rectangle_y),
            (rectangle_x + rect_size[0], rectangle_y + rect_size[1])
        ]
        # 生成随机RGB颜色
        random_color = (
            random.randint(0, 255),
            random.randint(0, 255),
            random.randint(0, 255)
        )
        draw_image.rectangle(rectangle_shape, fill=random_color)

image.save(f'./output/{run_id}.png')

关键修改点说明

  • 嵌套循环:外层for row in range(grid_rows)控制垂直方向的10行,内层for col in range(grid_cols)控制每行的10列,这样就能遍历所有100个网格位置。
  • 动态计算y坐标:把原来固定的rectangle_y = 0改成row * rect_size[1],这样每一行的起始y位置会随着行数递增,保证矩形在垂直方向排列。
  • 变量优化:我把画布尺寸、矩形尺寸、行列数都单独定义成变量,这样之后要调整网格大小(比如改成8×8)或者矩形尺寸时,只需要修改这些变量就行,不用到处找硬编码的数值。

这样修改后,运行代码就能生成一个10×10的随机彩色网格啦!

内容的提问来源于stack exchange,提问作者user15284020

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 10:47:27