diff options
Diffstat (limited to 'Lib/irix5/jpeg.py')
-rwxr-xr-x | Lib/irix5/jpeg.py | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/Lib/irix5/jpeg.py b/Lib/irix5/jpeg.py deleted file mode 100755 index 85d6d83..0000000 --- a/Lib/irix5/jpeg.py +++ /dev/null @@ -1,110 +0,0 @@ -# Implement 'jpeg' interface using SGI's compression library - -# XXX Options 'smooth' and 'optimize' are ignored. - -# XXX It appears that compressing grayscale images doesn't work right; -# XXX the resulting file causes weirdness. - -error = 'jpeg.error' # Exception - -options = {'quality': 75, 'optimize': 0, 'smooth': 0, 'forcegray': 0} - -comp = None -decomp = None - -def compress(imgdata, width, height, bytesperpixel): - global comp - import cl, CL - if comp is None: comp = cl.OpenCompressor(CL.JPEG) - if bytesperpixel == 1: - format = CL.GRAYSCALE - elif bytesperpixel == 4: - format = CL.RGBX - if options['forcegray']: - iformat = CL.GRAYSCALE - else: - iformat = CL.YUV - # XXX How to support 'optimize'? - params = [CL.IMAGE_WIDTH, width, CL.IMAGE_HEIGHT, height, \ - CL.ORIGINAL_FORMAT, format, \ - CL.ORIENTATION, CL.BOTTOM_UP, \ - CL.QUALITY_FACTOR, options['quality'], \ - CL.INTERNAL_FORMAT, iformat, \ - ] - comp.SetParams(params) - jpegdata = comp.Compress(1, imgdata) - return jpegdata - -def decompress(jpegdata): - global decomp - import cl, CL - if decomp is None: decomp = cl.OpenDecompressor(CL.JPEG) - headersize = decomp.ReadHeader(jpegdata) - params = [CL.IMAGE_WIDTH, 0, CL.IMAGE_HEIGHT, 0, CL.INTERNAL_FORMAT, 0] - decomp.GetParams(params) - width, height, format = params[1], params[3], params[5] - if format == CL.GRAYSCALE or options['forcegray']: - format = CL.GRAYSCALE - bytesperpixel = 1 - else: - format = CL.RGBX - bytesperpixel = 4 - # XXX How to support 'smooth'? - params = [CL.ORIGINAL_FORMAT, format, \ - CL.ORIENTATION, CL.BOTTOM_UP, \ - CL.FRAME_BUFFER_SIZE, width*height*bytesperpixel] - decomp.SetParams(params) - imgdata = decomp.Decompress(1, jpegdata) - return imgdata, width, height, bytesperpixel - -def setoption(name, value): - if type(value) <> type(0): - raise TypeError, 'jpeg.setoption: numeric options only' - if name == 'forcegrey': - name = 'forcegray' - if not options.has_key(name): - raise KeyError, 'jpeg.setoption: unknown option name' - options[name] = int(value) - -def test(): - import sys - if sys.argv[1:2] == ['-g']: - del sys.argv[1] - setoption('forcegray', 1) - if not sys.argv[1:]: - sys.argv.append('/usr/local/images/data/jpg/asterix.jpg') - for file in sys.argv[1:]: - show(file) - -def show(file): - import gl, GL, DEVICE - jpegdata = open(file, 'r').read() - imgdata, width, height, bytesperpixel = decompress(jpegdata) - gl.foreground() - gl.prefsize(width, height) - win = gl.winopen(file) - if bytesperpixel == 1: - gl.cmode() - gl.pixmode(GL.PM_SIZE, 8) - gl.gconfig() - for i in range(256): - gl.mapcolor(i, i, i, i) - else: - gl.RGBmode() - gl.pixmode(GL.PM_SIZE, 32) - gl.gconfig() - gl.qdevice(DEVICE.REDRAW) - gl.qdevice(DEVICE.ESCKEY) - gl.qdevice(DEVICE.WINQUIT) - gl.qdevice(DEVICE.WINSHUT) - gl.lrectwrite(0, 0, width-1, height-1, imgdata) - while 1: - dev, val = gl.qread() - if dev in (DEVICE.ESCKEY, DEVICE.WINSHUT, DEVICE.WINQUIT): - break - if dev == DEVICE.REDRAW: - gl.lrectwrite(0, 0, width-1, height-1, imgdata) - gl.winclose(win) - # Now test the compression and write the result to a fixed filename - newjpegdata = compress(imgdata, width, height, bytesperpixel) - open('/tmp/j.jpg', 'w').write(newjpegdata) |