首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pypng: numpy数组与输出PNG文件不同

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

Stack Overflow用户
提问于 2020-08-26 05:47:29
回答 1查看 50关注 0票数 1

我正在尝试编写一个程序,创建一个png文件,并将外部像素涂成黑色。我只需要黑白的,这样bitdepth=1就适合我的情况了。

代码语言:javascript
复制
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()

如果我将迷宫打印到控制台,它看起来没有问题:

代码语言:javascript
复制
[[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数组

代码语言:javascript
复制
[[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“。

EN

回答 1

Stack Overflow用户

发布于 2020-08-26 17:16:12

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63587569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档