Scipy和PIL无法生成单色位图fi

2024-09-30 22:20:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试生成一个单色位图(每个像素的uint8)作为bytestring上传到外部设备。在

import scipy.misc
import numpy as np

image = np.ones((100,100),dtype=np.uint8)*255
image[0:50] = 0

scipy.misc.imsave('nomode.bmp',image)

im =scipy.misc.toimage(image, mode='1')
im.convert('1').save('mode_1.bmp')

上面的代码为正确的文件大小生成一个空白图像(全黑),但是在nomode.bmp在

Mode_1-文件显示1.62kB(我想要的大小)

Nomode-文件显示10.8kB(太大)

我是否误解了如何使用模式参数。或者有更好的方法来生成位图头和文件吗?在


Tags: 文件imageimportkbmodenp像素scipy
2条回答

如果你想让每个像素都有8位值,我想你需要一个“L”模式的图像:

import scipy.misc
import numpy as np
from PIL import Image

image = np.ones((684, 608), dtype=np.uint8) * 255
image[300:490, 300:800] = 0
im = scipy.misc.toimage(image, mode="L")
im.save("outfile.bmp", mode="L")
im.show()

我不清楚你为什么需要位图头。在

您可以使用Image.convert('1')将PIL图像从颜色转换为双层。在

你可以:

im.convert('1').save('monochrome.bmp')

相关问题 更多 >