]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Create CMIF-video file from SGI rgb images
authorJack Jansen <jack.jansen@cwi.nl>
Wed, 20 Jan 1993 15:10:05 +0000 (15:10 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Wed, 20 Jan 1993 15:10:05 +0000 (15:10 +0000)
Demo/sgi/video/rgb2video.py [new file with mode: 0755]

diff --git a/Demo/sgi/video/rgb2video.py b/Demo/sgi/video/rgb2video.py
new file mode 100755 (executable)
index 0000000..040c1e5
--- /dev/null
@@ -0,0 +1,75 @@
+import sys
+import VFile
+import getopt
+import imgfile
+import string
+
+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 not format:
+               if zsize == 3:
+                       format = 'rgb'
+               elif zsize == 1:
+                       format = '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)
+
+       vout = VFile.VoutFile().init(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, data, None)
+               t = t + interval
+       sys.stderr.write('\n')
+       vout.close()
+
+def usage():
+       print 'Usage: rgb2video [-o output] [-i frameinterval] [-f format] rgbfile ...'
+       
+main()
+