Esta es una respuesta completa para bitmaps monocromos.
import math, struct
mult4 = lambda n: int(math.ceil(n/4))*4
mult8 = lambda n: int(math.ceil(n/8))*8
lh = lambda n: struct.pack("<h", n)
li = lambda n: struct.pack("<i", n)
def bmp(rows, w):
h, wB = len(rows), int(mult8(w)/8)
s, pad = li(mult4(wB)*h+0x20), [0]*(mult4(wB)-wB)
s = li(mult4(w)*h+0x20)
return (b"BM" + s + b"\x00\x00\x00\x00\x20\x00\x00\x00\x0C\x00\x00\x00" +
lh(w) + lh(h) + b"\x01\x00\x01\x00\xff\xff\xff\x00\x00\x00" +
b"".join([bytes(row+pad) for row in reversed(rows)]))
Por ejemplo:
FF XXXXXXXX
81 X......X
A5 X.X..X.X
81 X......X
A5 X.X..X.X
BD X.XXXX.X
81 X......X
FF XXXXXXXX
Así, la codificación esto como una serie de filas:
smile = [[0xFF], [0x81], [0xA5], [0x81], [0xA5], [0xBD], [0x81], [0xFF]]
hacerla con:
bmp(smile, 8)
en cuenta que es la la responsabilidad del programador de garantizar que el número requerido mber de bytes están presentes en cada fila suministrada.
El color negro se especifica en \ xff \ xff \ xff y el color blanco se especifica en el siguiente \ x00 \ x00 \ x00, en caso de que desee cambiarlos.
Consulte el módulo ['struct'] (http://docs.python.org/library/struct.html). –
Además, consulte [este hilo del foro] (http://pseentertainmentcorp.com/smf/index.php?topic=2034.0). – Chewie
Gracias, Chewie, es exactamente lo que necesito –