home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
pyos2bin.zip
/
Demo
/
sgi
/
video
/
rgb2video.py
< prev
next >
Wrap
Text File
|
1993-12-17
|
2KB
|
80 lines
import sys
import VFile
import getopt
import imgfile
import string
import imgconv
def main():
format = None
interval = 40
outfile = 'film.video'
try:
opts, args = getopt.getopt(sys.argv[1:], 'f:i:o:')
except getopt.error:
usage()
sys.exit(1)
for opt, arg in opts:
if opt == '-f':
format = arg
elif opt == '-i':
interval = string.atoi(arg)
elif opt == '-o':
outfile = arg
else:
usage()
sys.exit(1)
if not args:
usage()
sys.exit(1)
xsize, ysize, zsize = imgfile.getsizes(args[0])
nxsize = xsize
if zsize == 3:
oformat = 'rgb'
elif zsize == 1:
oformat = 'grey'
if xsize % 4:
addbytes = 4-(xsize%4)
nxsize = xsize + addbytes
print 'rgb2video: add',addbytes,'pixels per line'
else:
print 'rgb2video: incorrect number of planes:',zsize
sys.exit(1)
if format == None:
format = oformat
cfunc = imgconv.getconverter(oformat, format)
vout = VFile.VoutFile(outfile)
vout.format = format
vout.width = nxsize
vout.height = ysize
vout.writeheader()
t = 0
sys.stderr.write('Processing ')
for img in args:
sys.stderr.write(img + ' ')
if imgfile.getsizes(img) <> (xsize, ysize, zsize):
print 'rgb2video: Image is different size:', img
sys.exit(1)
data = imgfile.read(img)
if xsize <> nxsize:
ndata = ''
for i in range(0,len(data), xsize):
curline = data[i:i+xsize]
ndata = ndata + curline + ('\0'*(nxsize-xsize))
data = ndata
vout.writeframe(t, cfunc(data, nxsize, ysize), None)
t = t + interval
sys.stderr.write('\n')
vout.close()
def usage():
print 'Usage: rgb2video [-o output] [-i frameinterval] [-f format] rgbfile ...'
main()