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 >
Text File  |  1993-12-17  |  2KB  |  80 lines

  1. import sys
  2. import VFile
  3. import getopt
  4. import imgfile
  5. import string
  6. import imgconv
  7.  
  8. def main():
  9.     format = None
  10.     interval = 40
  11.     outfile = 'film.video'
  12.  
  13.     try:
  14.         opts, args = getopt.getopt(sys.argv[1:], 'f:i:o:')
  15.     except getopt.error:
  16.         usage()
  17.         sys.exit(1)
  18.     for opt, arg in opts:
  19.         if opt == '-f':
  20.             format = arg
  21.         elif opt == '-i':
  22.             interval = string.atoi(arg)
  23.         elif opt == '-o':
  24.             outfile = arg
  25.         else:
  26.             usage()
  27.             sys.exit(1)
  28.     if not args:
  29.         usage()
  30.         sys.exit(1)
  31.     
  32.     xsize, ysize, zsize = imgfile.getsizes(args[0])
  33.     nxsize = xsize
  34.     
  35.     if zsize == 3:
  36.         oformat = 'rgb'
  37.     elif zsize == 1:
  38.         oformat = 'grey'
  39.         if xsize % 4:
  40.             addbytes = 4-(xsize%4)
  41.             nxsize = xsize + addbytes
  42.             print 'rgb2video: add',addbytes,'pixels per line'
  43.     else:
  44.         print 'rgb2video: incorrect number of planes:',zsize
  45.         sys.exit(1)
  46.  
  47.     if format == None:
  48.         format = oformat
  49.     cfunc = imgconv.getconverter(oformat, format)
  50.  
  51.     vout = VFile.VoutFile(outfile)
  52.     vout.format = format
  53.     vout.width = nxsize
  54.     vout.height = ysize
  55.     vout.writeheader()
  56.     t = 0
  57.     sys.stderr.write('Processing ')
  58.     for img in args:
  59.         sys.stderr.write(img + ' ')
  60.         if imgfile.getsizes(img) <> (xsize, ysize, zsize):
  61.             print 'rgb2video: Image is different size:', img
  62.             sys.exit(1)
  63.         data = imgfile.read(img)
  64.         if xsize <> nxsize:
  65.             ndata = ''
  66.             for i in range(0,len(data), xsize):
  67.                 curline = data[i:i+xsize]
  68.                 ndata = ndata + curline + ('\0'*(nxsize-xsize))
  69.             data = ndata
  70.         vout.writeframe(t, cfunc(data, nxsize, ysize), None)
  71.         t = t + interval
  72.     sys.stderr.write('\n')
  73.     vout.close()
  74.  
  75. def usage():
  76.     print 'Usage: rgb2video [-o output] [-i frameinterval] [-f format] rgbfile ...'
  77.     
  78. main()
  79.         
  80.