使用Python 2.7将二进制文件转换为多个图形图像

时间:2016-09-09 17:28:09

标签: python python-2.7 binaryfiles graphic file-conversion

我有一个 64位无符号二进制文件,其中包含多个图像,此文件是数字分析软件的输出,旨在以二进制形式存储图形信息 。软件本身具有导出图像的内置功能,但它是一个旧软件,这样做很麻烦。

所以我试图使用python将此文件转换为多个图像。我发现了一个潜在的解决方案here

以下是我从上述帖子中复制的代码,对我的特定文件进行了最小的更改:

import numpy as np
import matplotlib.pyplot as plt

def main():
    data = read_data('test21.SGR', 8192, 8192)
    visualize(data)

def read_data(filename, width, height):
    with open(filename, 'r') as infile:
        # Skip the header
        infile.seek(8192)
        data = np.fromfile(infile, dtype=np.uint64)
    # Reshape the data into a 3D array. (-1 is a placeholder for however many
    # images are in the file... E.g. 2000)
    return data.reshape((width, height, -1))

def visualize(data):
    # There are better ways to do this, but let's keep it simple
    plt.ion()
    fig, ax = plt.subplots()
    im = ax.imshow(data[:,:,0], cmap=plt.cm.gray)
    for i in xrange(data.shape[-1]):
        image = data[:,:,i]
        im.set(data=image, clim=[image.min(), image.max()])
        fig.canvas.draw()

main()

但是当我使用这段代码时,错误说:

ValueError: total size of new array must be unchanged

如果能解决这个问题,我基本上可以从图像提取中节省至少2个小时。我是Python的新手,所以我不太了解如何解决这个问题,任何帮助都将在这里受到赞赏。

0 个答案:

没有答案