home *** CD-ROM | disk | FTP | other *** search
- 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()
-
-