pbm-файл, созданный в Python, работает только при копировании и вставке в новый текстовый файл

Когда я создаю случайное изображение в формате.pbm (код ниже) и выводю результат в файл.pbm, файл оказывается поврежденным (его нельзя открыть, например, с помощью GIMP). Однако, если я открою файл с помощью текстового редактора (например, "Блокнот") и скопирую содержимое в новый текстовый файл, созданный вручную, он будет работать нормально.

Я также попытался вывести изображение в формате.txt и вручную изменить его на.pbm, что также не сработало без создания нового текстового файла и копирования и вставки содержимого. Я также заметил, что текстовый файл, созданный Python, больше по размеру (примерно вдвое) по сравнению с созданным вручную файлом с тем же содержимым.

Ребята, у вас есть идея, почему и чем.txt-файл, созданный в python, отличается от созданного вручную с тем же содержанием?

Большое спасибо!

.pbm-файл, созданный с помощью следующей команды в командной строке Windows:

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) 

1 ответ

Я сам проверил код. Я не уверен, как копирование и вставка работали для вас (это не работало для меня), но кажется, что ваш код производит нечто похожее на это

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
Другие вопросы по тегам