2

当我以 .pbm 格式(下面的代码)创建随机图像并将结果输出到 .pbm 文件中时,该文件似乎已损坏(例如无法使用 GIMP 打开)。但是,如果我使用文本编辑器(例如记事本)打开文件并将内容复制到手动创建的新文本文件中,它可以正常工作。

我还尝试将图像输出为 .txt 并手动将其更改为 .pbm,如果不手动创建新的文本文件并复制和粘贴内容,这也不起作用。我还注意到,与手动创建的具有相同内容的文本文件相比,由 Python 创建的文本文件的大小更大(大约两倍)。

你们有什么想法吗,为什么以及如何在 python 中创建的 .txt 文件与手动创建的具有相同内容的文件不同?

非常感谢!

在 windows 命令行中使用以下命令创建的 .pbm 文件:

python random_image 20 10 > image.pbm

使用的代码:

import random
import sys

width = int(sys.argv[1]) #in pixel
height = int(sys.argv[2]) #in pixel

def print_image(width, height):

    image=[[" " for r in range(height)] for c in range(width)]

    print("P1 {} {}".format(width, height))

    for r in range(height):
        for c in range(width):
            image[c][r]=random.getrandbits(1)
            print (image [c][r], end='')
        print()

print_image(width, height) 
4

1 回答 1

0

我自己测试了代码。我不确定复制和粘贴如何为您工作(它对我不起作用),但您的代码似乎产生了与此类似的东西

P1 5 5
01101
01100
11010
01110
11000

但是 pbm 格式需要位之间有空格,因此要正确显示图片,您必须生成类似

P1 5 5
0 0 1 1 1 
1 0 0 1 0 
1 1 0 1 0 
1 1 0 0 1 
1 1 1 1 1 

要获得此结果,只需更改位的打印语句以在末尾包含一个空格

print (image [c][r], end=' ') # notice the space
于 2018-07-29T23:03:53.290 回答