Python 无法打开图像。无效的位图文件或其格式当前不受支持

Python 无法打开图像。无效的位图文件或其格式当前不受支持,python,python-2.7,numpy,bitmap,pypng,Python,Python 2.7,Numpy,Bitmap,Pypng,我编写这个Python程序是为了创建矩阵(2D数组)并将其保存到.png文件中。程序编译和运行时没有任何错误。甚至创建了IMAGE.png文件,但无法打开png文件。当我尝试在MSpaint中打开它时,它会显示: 无法打开图像。无效的位图文件或其格式当前不受支持 源代码: import numpy; import png; imagearray = numpy.zeros(shape=(512,512)); /* Code to insert one '1' in certain locat

我编写这个Python程序是为了创建矩阵(2D数组)并将其保存到.png文件中。程序编译和运行时没有任何错误。甚至创建了IMAGE.png文件,但无法打开png文件。当我尝试在MSpaint中打开它时,它会显示:

无法打开图像。无效的位图文件或其格式当前不受支持

源代码:

import numpy;
import png;

imagearray = numpy.zeros(shape=(512,512));

/* Code to insert one '1' in certain locations 
   of the numpy 2D Array. Rest of the location by default stores zero '0'.*/


f = open("IMAGE.png", 'wb');
f.write(imagearray);
f.close();
我不明白我哪里出错了,因为没有错误信息。请帮忙

PS-我只想将矩阵保存为一个图像文件,因此如果您有更好、更简单的方法在Python2.7中实现它,请推荐


多谢各位

并非每个数组都与图像格式兼容。假设您引用的是一个字节数组,您就是这样做的:

import os
import io
import Image
from array import array

def readimage(path):
    count = os.stat(path).st_size
    with open(path, "rb") as f:
        return bytearray(f.read())

bytes = readimage(path+extension)
image = Image.open(io.BytesIO(bytes))
image.save(savepath)
代码片段取自

希望这能帮助你,
Yahli.

并非每个阵列都与图像格式兼容。假设您引用的是一个字节数组,您就是这样做的:

import os
import io
import Image
from array import array

def readimage(path):
    count = os.stat(path).st_size
    with open(path, "rb") as f:
        return bytearray(f.read())

bytes = readimage(path+extension)
image = Image.open(io.BytesIO(bytes))
image.save(savepath)
代码片段取自

希望这能帮助你,
Yahli.

下面是一个用于创建位深度为1的图像的示例(即图像中的值仅为0和1)。该示例直接取自
numpngw
软件包的自述文件:

import numpy as np
from numpngw import write_png

# Example 2
#
# Create a 1-bit grayscale image.

mask = np.zeros((48, 48), dtype=np.uint8)
mask[:2, :] = 1
mask[:, -2:] = 1
mask[4:6, :-4] = 1
mask[4:, -6:-4] = 1
mask[-16:, :16] = 1
mask[-32:-16, 16:32] = 1

write_png('example2.png', mask, bitdepth=1)
图为:


下面是一个用于创建位深度为1的图像的示例(即图像中的值仅为0和1)。该示例直接取自
numpngw
软件包的自述文件:

import numpy as np
from numpngw import write_png

# Example 2
#
# Create a 1-bit grayscale image.

mask = np.zeros((48, 48), dtype=np.uint8)
mask[:2, :] = 1
mask[:, -2:] = 1
mask[4:6, :-4] = 1
mask[4:, -6:-4] = 1
mask[-16:, :16] = 1
mask[-32:-16, 16:32] = 1

write_png('example2.png', mask, bitdepth=1)
图为:


PNG文件不仅仅是数组中的数据转储。您需要使用库从numpy数组创建PNG文件。类似于,或者,或者我创建的名为.PNG文件的小模块,它不仅仅是数组中的数据转储。您需要使用库从numpy数组创建PNG文件。类似于,或者,或者我创建的称为的小模块。像魔术一样工作!!谢谢你这么辛苦的工作!!多谢各位