在Python中,如何使用Wand绘制/保存单色2位BMP

In Python, how do I draw/ save a monochrome 2 bit BMP with Wand

我需要创建一个 2 位单色 Windows BMP 格式的图像,并且需要在图案中绘制线条。由于我刚开始使用 python,我按照教程安装了 Wand module.

画得很好,我得到了我需要的内容。

保存图像时出现问题。无论我做什么,生成的图像始终是 24 bpp BMP。

我目前拥有的:

from wand.image import Image
from wand.drawing import Drawing
from wand.color import Color
draw=Drawing()

### SET VARS
mystepvalue = 15

with Image(filename='empty.bmp') as image:
          print(image.size)
          image.antialias = False
          draw.stroke_width = 1
          draw.stroke_color = Color('black')
          draw.fill_color = Color('black')
          #
          # --- draw the lines ---
          #
          for xpos in range(0,4790,mystepvalue):
                    draw.line( (xpos,0), (xpos, image.height) )

          draw(image)  # Have to remember this to see anything...

          # None of this makes a 2bit BMP
          image.depth = 2
          image.colorspace = "gray"
          image.antialias = False
          image.monochrome = True
          image.imagedepth =2
          image.save(filename='result.bmp')

源图像为 4800 x 283 px 169kb,result.bmp 相同,但为 4.075 kb。

这可能是我想念的颜色设置顺序。

在设置 depth/colorspace 属性之前尝试使用 Image.quantize() 删除所有独特的灰色。

    # ...
    image.quantize(2, colorspace_type='gray', dither=True)
    image.depth = 2
    image.colorspace = 'gray'
    image.type = 'bilevel'  # or grayscale would also work.
    image.save(filename='result.bmp')

还要记住 filename='bmp3:result.bmp'filename='bmp2:result.bmp' 控制使用哪个 BMP 版本进行编码。