首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >只有在新的文本文件中复制和粘贴时,用Python创建的pbm文件才有效

只有在新的文本文件中复制和粘贴时,用Python创建的pbm文件才有效
EN

Stack Overflow用户
提问于 2018-07-30 05:06:00
回答 1查看 322关注 0票数 2

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

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

你们知道用python创建的.txt文件和手工创建的相同内容的.txt文件有什么不同吗?

非常感谢!

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

代码语言:javascript
复制
python random_image 20 10 > image.pbm

使用的代码:

代码语言:javascript
复制
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) 
EN

回答 1

Stack Overflow用户

发布于 2018-07-30 07:03:53

我已经亲自测试了代码。我不确定copy&paste是如何为你工作的(它对我不起作用),但是你的代码似乎产生了类似下面这样的东西

代码语言:javascript
复制
P1 5 5
01101
01100
11010
01110
11000

但是pbm格式要求位之间有空格,因此为了正确显示图片,您必须生成如下内容

代码语言:javascript
复制
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语句更改为在末尾包含一个空格

代码语言:javascript
复制
print (image [c][r], end=' ') # notice the space
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51584559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档