1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
  | # 
 |  # The Python Imaging Library. 
 |  # $Id$ 
 |  # 
 |  # standard mode descriptors 
 |  # 
 |  # History: 
 |  # 2006-03-20 fl   Added 
 |  # 
 |  # Copyright (c) 2006 by Secret Labs AB. 
 |  # Copyright (c) 2006 by Fredrik Lundh. 
 |  # 
 |  # See the README file for information on usage and redistribution. 
 |  # 
 |    
 |  # mode descriptor cache 
 |  _modes = {} 
 |    
 |  ## 
 |  # Wrapper for mode strings. 
 |    
 |  class ModeDescriptor: 
 |    
 |      def __init__(self, mode, bands, basemode, basetype): 
 |          self.mode = mode 
 |          self.bands = bands 
 |          self.basemode = basemode 
 |          self.basetype = basetype 
 |    
 |      def __str__(self): 
 |          return self.mode 
 |    
 |  ## 
 |  # Gets a mode descriptor for the given mode. 
 |    
 |  def getmode(mode): 
 |      if not _modes: 
 |          # initialize mode cache 
 |          import Image 
 |          # core modes 
 |          for m, (basemode, basetype, bands) in Image._MODEINFO.items(): 
 |              _modes[m] = ModeDescriptor(m, bands, basemode, basetype) 
 |          # extra experimental modes 
 |          _modes["LA"] = ModeDescriptor("LA", ("L", "A"), "L", "L") 
 |          _modes["PA"] = ModeDescriptor("PA", ("P", "A"), "RGB", "L") 
 |          # mapping modes 
 |          _modes["I;16"] = ModeDescriptor("I;16", "I", "L", "L") 
 |          _modes["I;16L"] = ModeDescriptor("I;16L", "I", "L", "L") 
 |          _modes["I;16B"] = ModeDescriptor("I;16B", "I", "L", "L") 
 |      return _modes[mode] 
 |  
  |