Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pypng:numpy数组与输出PNG文件不同_Python_Numpy_Png_Pypng - Fatal编程技术网

Python Pypng:numpy数组与输出PNG文件不同

Python Pypng:numpy数组与输出PNG文件不同,python,numpy,png,pypng,Python,Numpy,Png,Pypng,我正在尝试编写一个程序,创建一个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=Tru

我正在尝试编写一个程序,创建一个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文件。我知道有一个带有png.Reader的read()方法,但抛出了一个错误:“png.FormatError:FormatError:png文件的签名无效。”

我自己发现了问题: 我必须为图像使用无符号字节,而不是int。
Maze=np.one((MazeHeight,MazeWidth),dtype=int)

Maze=np.one((MazeHeight,MazeWidth),dtype=uint8)

您可以在SO中上传图片。如果我将输入从array更改为range(int),我将得到预期的输出。但是我不能只用range(int)函数来绘制边框。我假设png类处理来自不同于数组列表的范围的返回值
writer=png.writer(MazeWidth,MazeHeigth,greyscale=true)
writer.write(文件,范围(255))