import os import os.path import struct from io import BytesIO from .jbig2 import JBIG2StreamReader, JBIG2StreamWriter from .pdfcolor import LITERAL_DEVICE_CMYK from .pdfcolor import LITERAL_DEVICE_GRAY from .pdfcolor import LITERAL_DEVICE_RGB from .pdftypes import LITERALS_DCT_DECODE, LITERALS_JBIG2_DECODE def align32(x): return ((x+3)//4)*4 class BMPWriter: def __init__(self, fp, bits, width, height): self.fp = fp self.bits = bits self.width = width self.height = height if bits == 1: ncols = 2 elif bits == 8: ncols = 256 elif bits == 24: ncols = 0 else: raise ValueError(bits) self.linesize = align32((self.width*self.bits+7)//8) self.datasize = self.linesize * self.height headersize = 14+40+ncols*4 info = struct.pack('