我正在尝试编写一个程序,创建一个png文件,并将外部像素涂成黑色。我只需要黑白的,这样bitdepth=1就适合我的情况了。
import png
import numpy as np
MazeHeight = 5
MazeWidth = 7
if __name__ == "__main__":
file = open('png.png', 'wb')
writer = png.Writer(MazeWidth, MazeHeight, greyscale=True, bitdepth=1)
#generating white array
Maze = np.ones((MazeHeight,MazeWidth),dtype=int)
#mark borders as black
for i in range(MazeHeight):
for j in range(MazeWidth):
#top/bottom bordes
if i == 0 or i == MazeHeight-1:
Maze[i][j] = 0
#left/right
elif j == 0 or j == MazeWidth-1:
Maze[i][j] = 0
writer.write(file, Maze)
file.close()如果我将迷宫打印到控制台,它看起来没有问题:
[[0 0 0 0 0 0 0]
[0 1 1 1 1 1 0]
[0 1 1 1 1 1 0]
[0 1 1 1 1 1 0]
[0 0 0 0 0 0 0]]png.png文件看起来不像numpy数组
[[1 1 1 1 1 1 1]
[1 1 1 1 1 1 1]
[1 1 1 1 1 1 1]
[0 1 1 1 0 1 1]
[1 1 1 1 1 1 1]](1为黑色,0为白色,因为我无法上传图片)
我不知道为什么我的控制台输出不同于png文件。我正在努力读取png文件。我知道有一个带有签名的read()方法,但是抛出了一个错误:"png.FormatError: FormatError: PNG file has invalid png.Reader“。
发布于 2020-08-26 17:16:12
我自己发现了自己的问题:我必须为Image使用无符号字节而不是int。Maze = np.ones((MazeHeight,MazeWidth),dtype=int)到Maze = np.ones((MazeHeight,MazeWidth),dtype=uint8)
https://stackoverflow.com/questions/63587569
复制相似问题