[問題] 有關寫檔的問題
下面是程式碼,問題在程式碼後
def byteToInt(data):
sum=0
k=0
for i in data:
sum+=ord(i)*pow(2,k)
k+=8
return sum
def intToByte(data):
string=''
while data!=0:
string+=chr(data%256)
data/=256
return string
fileName=raw_input()
ftr=open(fileName,"rb")
BMPData=ftr.read()
ftr.close()
position=[0,2,6,8,10,14,18,22,26,28,30,34,38,42,46,50,54]
i=0
BMPHeader=[]
while i<len(position)-1:
BMPHeader.append(byteToInt(BMPData[position[i]:position[i+1]]))
i+=1
space=4-((3*BMPHeader[6])%4);
if space==4:
space=0
i=54
j=-1
k=0
pixel=[]
while i<len(BMPData):
if k==0:
pixel.append([])
j+=1
pixel[j].append(byteToInt(BMPData[i:i+3]))
i+=3
k+=1
if k==BMPHeader[6]:
k=0
i+=space
ftr=open("123.bmp",'w')
k=0
for i in BMPData:
ftr.write(i)
for i in pixel:
for j in i:
ftr.write(intToByte(j))
print [(intToByte(j))]
k+=1
if space!=0:
ftr.write('\x00'*space)
print [('\x00'*space)]
ftr.close()
以這個圖檔為例 http://ya790206.googlepages.com/12.bmp
他的pixel data應該是
06 12 0F 06 12 0F 00 00
06 12 0F 06 12 0F 00 00
而這程式的螢幕輸出亦為如此
可是他寫到檔案裡面的卻是
06 12 0F 06 12 0F 00 00
06 12 0F 06 12 0F 00 00
06 12 0F 06 12 0F 00 00
06 12 0F 06 12 0F 00 00
為啥他會重覆輸入??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.120.222.46
→
11/05 00:31, , 1F
11/05 00:31, 1F
→
11/05 02:17, , 2F
11/05 02:17, 2F
→
11/05 02:17, , 3F
11/05 02:17, 3F
→
11/05 02:17, , 4F
11/05 02:17, 4F
→
11/05 02:17, , 5F
11/05 02:17, 5F
推
11/05 02:20, , 6F
11/05 02:20, 6F
→
11/05 02:22, , 7F
11/05 02:22, 7F
推
11/05 10:19, , 8F
11/05 10:19, 8F
→
11/05 10:20, , 9F
11/05 10:20, 9F
推
11/05 12:26, , 10F
11/05 12:26, 10F
推
11/05 14:16, , 11F
11/05 14:16, 11F
→
11/05 14:27, , 12F
11/05 14:27, 12F
→
11/05 14:43, , 13F
11/05 14:43, 13F
→
11/05 14:44, , 14F
11/05 14:44, 14F
→
11/05 14:46, , 15F
11/05 14:46, 15F
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章