annotate img2dcolor.py @ 12:580b64af2241

Add support for images that have already had their width cut down in direct color converter. Remove debug print statement.
author Mike Pavone <pavone@retrodev.com>
date Fri, 06 Sep 2013 19:13:46 -0700
parents 19226d79f839
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
1 #!/usr/bin/env python
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
2 from PIL import Image
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
3
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
4 def gchannel(Val):
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
5 return (Val >> 4) & 0xE
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
6
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
7 def gcolor(color):
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
8 if len(color) == 4:
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
9 (R, G, B, A) = color
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
10 else:
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
11 (R, G, B) = color
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
12 return (gchannel(R), gchannel(G), gchannel(B))
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
13
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
14 def trans_image(im):
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
15 pixels = im.getdata()
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
16 (width, height) = im.size
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
17 gpixels = bytearray()
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
18 A = 255
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
19 x = 0
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
20 y = 0
12
580b64af2241 Add support for images that have already had their width cut down in direct color converter. Remove debug print statement.
Mike Pavone <pavone@retrodev.com>
parents: 11
diff changeset
21 out_width = width if width <= 198 else width/2
11
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
22 for pixel in pixels:
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
23 if x == width:
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
24 x = 0
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
25 y += 1
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
26 if x == 0:
12
580b64af2241 Add support for images that have already had their width cut down in direct color converter. Remove debug print statement.
Mike Pavone <pavone@retrodev.com>
parents: 11
diff changeset
27 pad = 198-out_width
11
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
28 for i in xrange(0, pad*2):
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
29 gpixels.append(0)
12
580b64af2241 Add support for images that have already had their width cut down in direct color converter. Remove debug print statement.
Mike Pavone <pavone@retrodev.com>
parents: 11
diff changeset
30 if width == out_width or not (x & 1):
11
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
31 (R,G,B) = gcolor(pixel)
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
32 gpixels.append(B)
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
33 gpixels.append(G << 4 | R)
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
34 x += 1
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
35 return gpixels
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
36
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
37 def appendword(b, word):
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
38 b.append(word >> 8)
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
39 b.append(word & 0xff)
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
40
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
41
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
42
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
43 def main(argv):
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
44 if len(argv) < 3:
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
45 print "Not enough arguments"
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
46 return
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
47 fname = argv[1]
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
48 im = Image.open(fname)
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
49 pix = trans_image(im)
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
50 out = open(argv[2], 'wb')
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
51 out.write(pix)
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
52
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
53 if __name__ == '__main__':
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
54 import sys
19226d79f839 Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
55 main(sys.argv)