symbian-qemu-0.9.1-12/python-2.6.1/Lib/plat-irix5/torgb.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 # Convert "arbitrary" image files to rgb files (SGI's image format).
       
     2 # Input may be compressed.
       
     3 # The uncompressed file type may be PBM, PGM, PPM, GIF, TIFF, or Sun raster.
       
     4 # An exception is raised if the file is not of a recognized type.
       
     5 # Returned filename is either the input filename or a temporary filename;
       
     6 # in the latter case the caller must ensure that it is removed.
       
     7 # Other temporary files used are removed by the function.
       
     8 from warnings import warnpy3k
       
     9 warnpy3k("the torgb module has been removed in Python 3.0", stacklevel=2)
       
    10 del warnpy3k
       
    11 
       
    12 import os
       
    13 import tempfile
       
    14 import pipes
       
    15 import imghdr
       
    16 
       
    17 table = {}
       
    18 
       
    19 t = pipes.Template()
       
    20 t.append('fromppm $IN $OUT', 'ff')
       
    21 table['ppm'] = t
       
    22 
       
    23 t = pipes.Template()
       
    24 t.append('(PATH=$PATH:/ufs/guido/bin/sgi; exec pnmtoppm)', '--')
       
    25 t.append('fromppm $IN $OUT', 'ff')
       
    26 table['pnm'] = t
       
    27 table['pgm'] = t
       
    28 table['pbm'] = t
       
    29 
       
    30 t = pipes.Template()
       
    31 t.append('fromgif $IN $OUT', 'ff')
       
    32 table['gif'] = t
       
    33 
       
    34 t = pipes.Template()
       
    35 t.append('tifftopnm', '--')
       
    36 t.append('(PATH=$PATH:/ufs/guido/bin/sgi; exec pnmtoppm)', '--')
       
    37 t.append('fromppm $IN $OUT', 'ff')
       
    38 table['tiff'] = t
       
    39 
       
    40 t = pipes.Template()
       
    41 t.append('rasttopnm', '--')
       
    42 t.append('(PATH=$PATH:/ufs/guido/bin/sgi; exec pnmtoppm)', '--')
       
    43 t.append('fromppm $IN $OUT', 'ff')
       
    44 table['rast'] = t
       
    45 
       
    46 t = pipes.Template()
       
    47 t.append('djpeg', '--')
       
    48 t.append('(PATH=$PATH:/ufs/guido/bin/sgi; exec pnmtoppm)', '--')
       
    49 t.append('fromppm $IN $OUT', 'ff')
       
    50 table['jpeg'] = t
       
    51 
       
    52 uncompress = pipes.Template()
       
    53 uncompress.append('uncompress', '--')
       
    54 
       
    55 
       
    56 class error(Exception):
       
    57     pass
       
    58 
       
    59 def torgb(filename):
       
    60     temps = []
       
    61     ret = None
       
    62     try:
       
    63         ret = _torgb(filename, temps)
       
    64     finally:
       
    65         for temp in temps[:]:
       
    66             if temp != ret:
       
    67                 try:
       
    68                     os.unlink(temp)
       
    69                 except os.error:
       
    70                     pass
       
    71                 temps.remove(temp)
       
    72     return ret
       
    73 
       
    74 def _torgb(filename, temps):
       
    75     if filename[-2:] == '.Z':
       
    76         (fd, fname) = tempfile.mkstemp()
       
    77         os.close(fd)
       
    78         temps.append(fname)
       
    79         sts = uncompress.copy(filename, fname)
       
    80         if sts:
       
    81             raise error, filename + ': uncompress failed'
       
    82     else:
       
    83         fname = filename
       
    84     try:
       
    85         ftype = imghdr.what(fname)
       
    86     except IOError, msg:
       
    87         if type(msg) == type(()) and len(msg) == 2 and \
       
    88                 type(msg[0]) == type(0) and type(msg[1]) == type(''):
       
    89             msg = msg[1]
       
    90         if type(msg) is not type(''):
       
    91             msg = repr(msg)
       
    92         raise error, filename + ': ' + msg
       
    93     if ftype == 'rgb':
       
    94         return fname
       
    95     if ftype is None or not table.has_key(ftype):
       
    96         raise error, '%s: unsupported image file type %r' % (filename, ftype)
       
    97     (fd, temp) = tempfile.mkstemp()
       
    98     os.close(fd)
       
    99     sts = table[ftype].copy(fname, temp)
       
   100     if sts:
       
   101         raise error, filename + ': conversion to rgb failed'
       
   102     return temp