]>
jfr.im git - z_archive/sierpinski.git/blob - bmp.py
1 # bmp - bitmap processing
3 from struct
import unpack
5 class FormatError(Exception): pass
6 class MagicError(FileFormatError
): pass
7 class CompressionError(FormatError
): pass
8 class BppError(FormatError
): pass
11 def __init__(self
, fn_or_fo
):
13 if isinstance(fn_or_fo
, basestring
):
18 header
= self
.fo
.read(14)
19 magic
, filesize
, start_address
= unpack("<2sI2x2xI", header
)
20 if magic
!= "BM": raise MagicError("wrong BMP header magic")
21 dib
= self
.fo
.read(40)
22 magic
, pixelwidth
, pixelheight
, bpp
, compression
= unpack("<III2xHI4x4x4x4x4x", dib
)
23 if magic
!= 40: raise MagicError("wrong DIB header magic")
24 if compression
!= 0: raise CompressionError("compression not supported")