在 PIL 中创建棋盘

2023-11-29

背景

我一直在尝试在 PIL 模块中创建一个棋盘,并且已经获得了前两行的一般模式,但无法弄清楚如何将其应用到整个棋盘。正如你所看到的,我创建了一个图像:

from PIL import Image

img = Image.new("RGB", (15,15), "white") # create a new 15x15 image
pixels = img.load() # create the pixel map

我对前两行的解决方案

注意 - 我仍在学习 Python,因此这段代码可能看起来效率很低,但请随意提出改进建议。

第二行:

Code:

black_2 = []
for i in range(img.size[0]):
    if i % 2 == 0:
        black_2.append(i)

这为我提供了放置黑色像素的所有水平索引位置。因此,对于我创建的 15x15 板,它返回[0, 2, 4, 6, 8, 10, 12, 14]

第一行:

Code:

然后,我使用第二行计算出第一行的水平索引位置

black_1 = [i-1 for i in black_2 if i > 0]
if img.size[0] % 2 == 0: # 'that' if statement
    black_1.append(img.size[0]-1)

对于我创建的 15x15 像素板,它返回[1, 3, 5, 7, 9, 11, 13]。我创建了 if 语句,因为我意识到如果板的长度均匀,则最后一个黑色像素不会显示,这似乎解决了这个问题。

将像素更改为黑色:

# hardcoded to check patterns
for i in black_1:
    pixels[i,0] = (0,0,0)

for k in black_2:
    pixels[k,1] = (0,0,0)

img.show()

如何将这两种图案应用到电路板的其余部分,无论其大小如何?

我会怀疑for var in range()需要循环,但我不确定它会如何变化,具体取决于高度(img.size[1])的董事会是奇数或偶数。

到目前为止的总体模式:

Chessboard

black_1适用于第一行

black_2适用于第二行


国际象棋棋盘有 64 个方格,而不是 256 个。首先你需要(8,8)然后您可以使用双 for 循环将颜色分配给所有 8 行。

任何尺寸的一般示例

from PIL import Image

size = 16
img = Image.new("RGB", (size,size), "white") # create a new 15x15 image
pixels = img.load() # create the pixel map

black_2 = []
for i in range(img.size[0]):
    if i % 2 == 0:
        black_2.append(i)

black_1 = [i-1 for i in black_2 if i > 0]
if img.size[0] % 2 == 0: # 'that' if statement
    black_1.append(img.size[0]-1)


for i in black_1:
    for j in range(0, size, 2):
        pixels[i,j] = (0,0,0)

for k in black_2:
    for l in range(1, size+1, 2):
        pixels[k,l] = (0,0,0)

img.show()

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PIL 中创建棋盘 的相关文章

  • 类的 IPython 表示

    我正在使用我创建的模块尝试 IPython 但它没有显示类对象的实际表示 相反 它显示类似的内容 TheClass module TheClass name I heavily在这个模块中使用元类 我有真正有意义的类表示 应该向用户显示 是
  • Python 类型提示 Dict 语法错误 可变默认值是不允许的。使用“默认工厂”

    我不知道为什么解释器会抱怨这个类型的字典 对于这两个实例 我得到一个 不允许可变默认值 使用默认工厂 语法错误 我使用的是 python 3 7 3 from dataclasses import dataclass from typing
  • Python - 比较同一字典中的值

    我有一本字典 d Trump MAGA FollowTheMoney Clinton dems Clinton Stein FollowTheMoney Atlanta 我想删除字符串列表中的重复字符串 该字符串是键的值 对于这个例子 期望
  • 在 Python 中将列表元素作为单独的项目返回

    Stackoverflow 的朋友们大家好 我有一个计算列表的函数 我想单独返回列表的每个元素 如下所示 接收此返回的函数旨在处理未定义数量的参数 def foo my list 1 2 3 4 return 1 2 3 4 列表中的元素数
  • matplotlib 图中点的标签

    所以这是一个关于已发布的解决方案的问题 我试图在我拥有的 matplotlib 散点图中的点上放置一些数据标签 我试图在这里模仿解决方案 是否有与 MATLAB 的 datacursormode 等效的 matplotlib https s
  • 多输出堆叠回归器

    一次性问题 我正在尝试构建一个多输入堆叠回归器 添加到 sklearn 0 22 据我了解 我必须结合StackingRegressor and MultiOutputRegressor 经过多次尝试 这似乎是正确的顺序 import nu
  • VSCode Settings.json 丢失

    我正在遵循教程 并尝试将 vscode 指向我为 Scrapy 设置的虚拟工作区 但是当我在 VSCode 中打开设置时 工作区设置 选项卡不在 用户设置 选项卡旁边 我还尝试通过以下方式手动转到文件 APPDATA Code User s
  • Django Rest Framework 是否有第三方应用程序来自动生成 swagger.yaml 文件?

    我有大量的 API 端点编写在django rest framework并且不断增加和更新 如何创建和维护最新的 API 文档 我当前的版本是 Create swagger yaml文件并以某种方式在每次端点更改时自动生成 然后使用此文件作
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • PyQt 使用 ctrl+Enter 触发按钮

    我正在尝试在我的应用程序中触发 确定 按钮 我当前尝试的代码是这样的 self okPushButton setShortcut ctrl Enter 然而 它不起作用 这是有道理的 我尝试查找一些按键序列here http ftp ics
  • 打印包含字符串和其他 2 个变量的变量

    var a 8 var b 3 var c hello my name is var a and var b bye print var c 当我运行程序时 var c 会像这样打印出来 hello my name is 8 and 3 b
  • 如何将特定范围内的标量添加到 numpy 数组?

    有没有一种更简单 更节省内存的方法可以单独在 numpy 中执行以下操作 import numpy as np ar np array a l r ar c a a 0 l ar tolist a r 它可能看起来很原始 但它涉及获取给定数
  • python的shutil.move()在linux上是原子的吗?

    我想知道python的shutil move在linux上是否是原子的 如果源文件和目标文件位于两个不同的分区上 行为是否不同 或者与它们存在于同一分区上时的行为相同吗 我更关心的是如果源文件和目标文件位于同一分区上 shutil move
  • Django 视图中的“请求”是什么

    在 Django 第一个应用程序的 Django 教程中 我们有 from django http import HttpResponse def index request return HttpResponse Hello world
  • 如何将 ascii 值列表转换为 python 中的字符串?

    我在 Python 程序中有一个列表 其中包含一系列数字 这些数字本身就是 ASCII 值 如何将其转换为可以在屏幕上回显的 常规 字符串 您可能正在寻找 chr gt gt gt L 104 101 108 108 111 44 32 1
  • pandas - 包含时间序列数据的堆积条形图

    我正在尝试使用时间序列数据在 pandas 中创建堆积条形图 DATE TYPE VOL 0 2010 01 01 Heavy 932 612903 1 2010 01 01 Light 370 612903 2 2010 01 01 Me
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • Python - 如何确定解析的 XML 元素的层次结构级别?

    我正在尝试使用 Python 解析 XML 文件中具有特定标记的元素并生成输出 excel 文档 该文档将包含元素并保留其层次结构 我的问题是我无法弄清楚每个元素 解析器在其上迭代 的嵌套深度 XML 示例摘录 3 个元素 它们可以任意嵌套
  • 为什么 csv.DictReader 给我一个无属性错误?

    我的 CSV 文件是 200 Service 我放入解释器的代码是 snav csv DictReader open screennavigation csv delimiter print snav fieldnames 200 for
  • 如何在Python脚本中从youtube-dl中提取文件大小?

    我是 python 编程新手 我想在下载之前提取视频 音频大小 任何 YouTube 视频 gt gt gt from youtube dl import YoutubeDL gt gt gt url https www youtube c

随机推荐

  • 页面对象模式和替代方案

    当您自动化 Web UI 测试时 您希望组织您的测试 以便它们可维护并尽可能减少代码重复 要去的路上是页面对象模式 您在现实世界的项目中尝试过吗 还有其他选择吗 如何对复杂的网站进行建模 很少的嵌套母版页 弹出窗口 具有疯狂验证的大型表单
  • 如何在flutter中实现下拉列表?

    我有一个位置列表 我想在 Flutter 中将其实现为下拉列表 我对这门语言很陌生 这就是我所做的 new DropdownButton value selectedLocation onChanged String newValue se
  • 解决方案 - 实体类型 ApplicationUser 不是当前上下文模型的一部分

    我将这个问题作为文档发布 因为我花了很多时间才找到这个简单的问题 我正在使用 VS15 生成的原始 MVC 项目并尝试对其进行修改 错误 InvalidOperationException 实体类型 ApplicationUser 不是当前
  • MSDOS“你好世界”EXE

    我想编译一个 Hello World MS DOS exe 不是在 XP 16 位模式或 Windows 操作系统之上的 MS DOS 模式下运行的程序 我可以在我的 MS DOS 机器上运行的 HELOWRLD EXE I think D
  • 如何在 SQLite 中获取行号?

    我读过很多关于如何在 SQLite 中使用行号的文章 但没有一篇文章给了我我需要的答案 我知道如何使用此查询选择行号 SELECT SELECT COUNT FROM table WHERE title lt t title OR titl
  • 只能选择一个复选框

    我想一次只选择一个复选框 我的程序从文本文件中读取并根据文本文件中有多少个 答案 创建复选框 有谁知道代码有什么问题吗 public partial class Form1 Form string temp questions txt pu
  • @State 和 @StateObject 有什么区别

    我创建了一个这样的模型 import Foundation class Play ObservableObject Published var name String Tayle Published var age Int 12 它将在两个
  • MySQL选择查询以根据列表值获取记录

    我正在使用MySQL 我有 3 个表如下 表 subject Master subjectId subjectShortName 1 English 2 French 3 German 4 Latin 表 class Master clas
  • HighCharts xAxis - 月份的刻度间隔

    我正在尝试绘制样条图通过 失败的测试用例数量并根据它们进行分组小时 日期 月 年我得到这个值作为不规则系列 即 如果是小时 数据将无法在所有 24 小时内可用 其他分组的情况也是如此 由于数据不规则 需要 x 轴刻度间隔为月 已尝试使用 d
  • jquery和bootstrap之间的冲突

    我有一个代码 其中包含 jquery 文件和 bootstrap 文件在 header php 中 我遇到的问题是 如果我在 bootstrap js 文件之前包含 jquery 文件 它会弄乱网页上的其他选项卡 基本上即使我单击其他选项卡
  • 使用循环将输出打印到 Knit 中

    为这个问题道歉 我确信答案很简单 我有几个包含对象的列表 我通过knitr 将它们运行到HTML 中 并希望控制输出的顺序 此代码打印所有 list1 输出 然后打印所有 list1 绘图 然后打印所有 list2 输出 然后打印所有 li
  • 需要 JButton 事件支持

    我最近回答了一个关于如何在另一个类的主方法中打开登录面板的问题 因为我还没有上过任何 Swing 课程 只有基本的 Java 编程 所以我已经偶然发现了另一个问题 我如何检测用户是否按下了 JPanel 中的按钮并使其执行某些操作 例如 用
  • 应用程序在前台运行时收到的 iOS 推送通知

    根据我的理解 当应用程序正在运行或在前台并收到推送通知时 应用程序不应显示任何警报 但应用程序委托将调用didReceiveRemoteNotification委托方法 我应该在该回调中处理推送通知 推送通知应仅在应用程序处于后台时显示警报
  • 在 awk 中使用两个字段分隔符[重复]

    这个问题在这里已经有答案了 我正在尝试用 bash 解析这样的字符串 OPS all 1234 ip port1 name state number id phone 123 zip 123 state AB city seattle OP
  • php 中从右到左的语言支持

    我正在开发一个网站 人们可以用阿拉伯语发表评论 我的网站是用 php 构建的 有谁知道如何添加从右到左的语言支持以用英语编写文本吗 尝试指定在你的标记中 我会读 http www w3 org International tutorials
  • 在Python中,如何在不更改命名空间的情况下以宏样式将一个文件包含(而不是导入)另一个文件中?

    首先我确实了解 导入 当我尝试 导入 时 它不起作用 我想做的是将一个模块分成两部分 其中一个部分可以由一组编辑 而另一个则不能 我希望该小组编写定义明确的 检索函数 而不会受到诱惑或无法编辑运行它们的后端代码 即使是意外 导入 时命名空间
  • Openstack - 更改仪表板的管理员密码

    在哪里可以更改 Openstack 中仪表板的管理员密码 我使用 packstack 安装程序安装了 openstack keystonerc admin 文件中的密码也不起作用 我使用 CentOS 6 3 并且我可以访问配置文件 用户名
  • .NET core - 将连接字符串读入 Entity Framework Core

    我的项目结构非常标准 within EFData EFData是一个 Entity Framework Core 类库 它隔离了所有数据库交互 数据库模型和我的DBContext 我以这种方式构建它 使其与数据库环境无关 API项目当然有参
  • C# 自定义列表框 GUI

    我有一个类列表 但不同的子项有不同的属性需要显示 我想要实现的是在 gui 中拥有一个列表框类型的控件 它使每个子项都可以按照自己想要的方式显示其属性 因此不要为每个类使用相同的预定义列 我设想类似传输界面 如下 的东西 每个类都可以绘制自
  • 在 PIL 中创建棋盘

    背景 我一直在尝试在 PIL 模块中创建一个棋盘 并且已经获得了前两行的一般模式 但无法弄清楚如何将其应用到整个棋盘 正如你所看到的 我创建了一个图像 from PIL import Image img Image new RGB 15 1