在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 版本进行编码。
我需要创建一个 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 版本进行编码。