Mercurial > repos > ghero
annotate img2dcolor.py @ 11:19226d79f839
Add direct color DMA demo and converter
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 06 Sep 2013 19:09:19 -0700 |
parents | |
children | 580b64af2241 |
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 |
19226d79f839
Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
21 for pixel in pixels: |
19226d79f839
Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
22 if x == width: |
19226d79f839
Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
23 x = 0 |
19226d79f839
Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
24 y += 1 |
19226d79f839
Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
25 if x == 0: |
19226d79f839
Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
26 pad = 198-width/2 |
19226d79f839
Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
27 print 'pad', pad |
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) |
19226d79f839
Add direct color DMA demo and converter
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
30 if not (x & 1): |
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) |