python 制作数独并导出图片
时间: 2024-06-02 17:02:29 浏览: 15
要制作数独并导出图片,可以使用Python中的Pillow库来操作图片,使用NumPy库来处理数独。以下是一个示例代码,可以生成一个数独并将其导出为PNG格式的图片。
```python
from PIL import Image, ImageDraw, ImageFont
import numpy as np
# 数独生成函数
def generate_sudoku():
nums = np.zeros((9,9), dtype=int)
for i in range(9):
nums[0,i] = i+1
np.random.shuffle(nums[0])
nums[1] = np.roll(nums[0],3)
nums[2] = np.roll(nums[1],3)
nums[3] = np.roll(nums[0],1)
nums[4] = np.roll(nums[1],1)
nums[5] = np.roll(nums[2],1)
nums[6] = np.roll(nums[3],3)
nums[7] = np.roll(nums[4],3)
nums[8] = np.roll(nums[5],3)
return nums
# 导出数独为图片
def export_sudoku_to_image(sudoku, filename):
font = ImageFont.truetype("arial.ttf", 40) # 字体
cell_size = 64 # 每个格子的大小
img_size = (cell_size*9, cell_size*9) # 图片大小
img = Image.new("RGB", img_size, (255, 255, 255)) # 创建空白图片
draw = ImageDraw.Draw(img)
for i in range(9):
for j in range(9):
if sudoku[i,j] == 0: # 空格
draw.rectangle([(j*cell_size, i*cell_size), ((j+1)*cell_size, (i+1)*cell_size)], outline="black")
else: # 数字
draw.text((j*cell_size+cell_size//2-10, i*cell_size+cell_size//2-20), str(sudoku[i,j]), font=font, fill="black")
img.save(filename) # 保存图片
if __name__ == "__main__":
sudoku = generate_sudoku()
export_sudoku_to_image(sudoku, "sudoku.png")
```
这个代码生成一个数独并将其导出为`sudoku.png`文件。你可以在代码中自定义字体、颜色和文件名。