如何在pbm文件中每两个像素之间设置space(ASCII模式)
How to make space between every two pixels in a pbm file(ASCII mode)
我有一个 ASCII 模式的 test.pbm 文件,其中包含如下代码:
P1
# Comment
9 9
000000000
011000000
011000000
011000000
011000000
011000010
011111110
011111110
000000000
我想制作一个新文件 "newFile.pbm",每两个像素之间包含 space。喜欢如下:
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" 来完成这项工作,但是我遇到了很多问题,首先,打开 .pbm 时显示 'IOError: cannot identify image file',其次,可以不要在每两个像素之间制作 space。其实我是 Python 的新人。我的 os Linux Mint 17.3 cinamon 32 位和 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()
你可以这样做:
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))
我有一个 ASCII 模式的 test.pbm 文件,其中包含如下代码:
P1
# Comment
9 9
000000000
011000000
011000000
011000000
011000000
011000010
011111110
011111110
000000000
我想制作一个新文件 "newFile.pbm",每两个像素之间包含 space。喜欢如下:
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" 来完成这项工作,但是我遇到了很多问题,首先,打开 .pbm 时显示 'IOError: cannot identify image file',其次,可以不要在每两个像素之间制作 space。其实我是 Python 的新人。我的 os Linux Mint 17.3 cinamon 32 位和 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()
你可以这样做:
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))