2016-11-30 34 views
0

我有一个test.pbm文件中的ASCII模式包含的代码如下所示每两个像素之间的间隔:如何使一个PBM文件(ASCII模式)

P1 
# Comment 
9 9 
000000000 
011000000 
011000000 
011000000 
011000000 
011000010 
011111110 
011111110 
000000000 

我想打一个新的文件“newFile.pbm”将包含每两个像素之间的空间。就像如下:

P1 
# Comment 
9 9 
0 0 0 0 0 0 0 0 0 
0 1 1 0 0 0 0 0 0 
0 1 1 0 0 0 0 0 0 
0 1 1 0 0 0 0 0 0 
0 1 1 0 0 0 0 0 0 
0 1 1 0 0 0 0 1 0 
0 1 1 1 1 1 1 1 0 
0 1 1 1 1 1 1 1 0 
0 0 0 0 0 0 0 0 0 

我试图打开文件“test.pbm”用下面的代码做的工作,但我已经遇到了许多问题,首先,它表明“IO错误:无法识别图像文件'打开.pbm时,其次,不能在每两个像素之间留出空间。其实我是Python新手。我的Linux Linux Mint 17.3 cinamon 32bit和Python2.7.6。请帮忙。我曾尝试下面给出的代码:

fo=open("test.pbm",'r') 
columnSize, rowSize=fo.size 
x=fo.readlines() 
fn = open("newfile.pbm","w") 
for i in range(columnSize): 
    for j in range(rowSize): 
     fn.write(x[i][j]) 
fn.close() 
+0

您的文件将始终包含前3行? –

+0

@CarlesMitjans是的 – Primo

回答

0

你可以做这样的事情:

with open("test.pbm", 'r') as f: 
    image = f.readlines() 

with open("newfile.pbm", "w") as f: 
    f.writelines(image[:3]) # rewrite the header with no change 
    for line in image[3:]: # expand the remaining lines 
     f.write(' '.join(line)) 
+0

谢谢你的回答。它工作正常。如果我想改变新文件中的每个像素作为我的选择,我该怎么做? – Primo

+0

我不明白这个问题。 – sal

+0

如何读取新的pbm文件“newfile.pbm”的每个像素? – Primo

相关问题