You need to enable JavaScript to run this app. 如何用Python PIL生成100x100尺寸、5x5格规格的棋盘格图案
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python PIL生成100x100尺寸、5x5格规格的棋盘格图案

100×100规格5×5排布棋盘格的PIL正确实现

原代码存在的核心问题

  • 图像创建参数错位:Image.new 要求传入的尺寸元组格式为(宽度, 高度),原代码传入(h,w)完全颠倒了宽高顺序,直接导致画布比例异常
  • 循环逻辑冗余:逐像素双层遍历全图,在循环内反复新建独立子图、重复初始化绘制对象,完全没有利用PIL批量绘制图形的高效能力
  • 棋盘格判断逻辑错误:直接对单个像素坐标做奇偶判断,没有按照5×5的分块规则计算格子归属,无法生成规整的方格图案
  • 绘制坐标顺序颠倒:调用draw.rectangle时,传入的两个坐标点数值逻辑反向,根本无法画出位置正确的矩形区域
  • 尺寸不匹配需求:原代码默认画布为500×500,和要求的100×100输出尺寸不符,也没有实现单格尺寸为总高/5、总宽/5的分割规则

可直接落地的正确实现代码

from PIL import Image, ImageDraw

# 按要求设定图像总尺寸
total_h = 100
total_w = 100
# 计算单个棋盘格的宽高,满足h/5、w/5的要求
cell_h = total_h // 5
cell_w = total_w // 5

# 新建RGB模式空白画布
img = Image.new("RGB", (total_w, total_h))
draw = ImageDraw.Draw(img)

# 遍历5行5列的所有棋盘格位置
for row in range(5):
    for col in range(5):
        # 按棋盘格交替规则填充黑白两色
        if (row + col) % 2 == 0:
            fill = (255, 255, 255)
        else:
            fill = (0, 0, 0)
        # 计算当前格子的绘制边界坐标
        top_left = (col * cell_w, row * cell_h)
        bottom_right = ((col + 1) * cell_w, (row + 1) * cell_h)
        draw.rectangle([top_left, bottom_right], fill=fill)

img.show()

实现效果说明

  • 最终输出图像严格为100×100尺寸
  • 共排布5行5列的棋盘格,单格尺寸正好为总高度的1/5、总宽度的1/5(即20×20像素)
  • 棋盘格按相邻不同色的规则交替填充,边缘整齐无错位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 16:06:07