import struct
f = file("cpc3input.ppm", "r") # input filebinfile = open('bin3ouput.scr', 'wb') # output file
pal = [[0,0,0],[255,255,255]] # initial palette
for t in range(48):
binfile.write(data)
</pre>
Finally, here is a program for MODE 2. Input file must an ASCII P'''B'''M this time.
<pre>
# Transform PBM image to Amstrad SCR file (MODE 2)
# 2011-08-09
from numpy import *
import struct
f = file("input.pbm", "r")
binfile = open('output.scr', 'wb')
def byte_bin(x):
r=""
for n in range(7,-1,-1):
v=2**n
if x>=v:
x-=v
r+="1"
else:
r+="0"
return r
f.readline()
f.readline()
g = f.readline()
xdim, ydim = [int(q) for q in g.split()]
b=zeros((xdim,ydim))
x, y = 0, 0
while True:
g = f.readline()
if g=="": break
for q in g:
if q in ("0", "1"):
b[x,y] = int(q)
x+=1
if x==xdim:
x=0
y+=1
for cl in range(8): # line in character
for y in range(ydim/8):
for x in range(0,xdim,8):
oo = 0
for q in range(8):
if b[x+7-q,y*8+cl]==1:
oo += 2**q
data = struct.pack("B", oo)
binfile.write(data)
data = struct.pack("B", 0)
for t in range(48):
binfile.write(data)
binfile.close()
</pre>