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