0
我正在尝试在给定的确切大小的Python中创建一个BMP文件。我需要这个尺寸的精度低至一个字节,而且我在生成图像时遇到了问题。要做到这一点我用枕头库如下:在Python 3中创建给定大小的BMP文件
img = Image.new('RGB', (1, size//4), "black")
pixels = img.load()
for i in range(img.size[0]):
for j in range(img.size[1]):
pixels[i,j] = (i, j, 1)
img.save("image.bmp")
哪里size
等于1*1024*1024 = 1048576
(计入字节1MB大小)。但是,创建的文件有点大 - 它有1048630个字节。我想这是因为一个位图头文件,但是当我尝试从一般大小的。减去头的大小:
img = Image.new('RGB', (1, (size-54)//4), "black")
生成的文件大小为1048576 - 用2个字节无章可循。
如何正确计算创建BMP文件时提供的尺寸?这样的文件的内容可以是随机的,对我无关紧要。
是否真的需要创建一个文件然后被删除?难道它不能在几行或者从一开始就完成,而没有创建 - 删除 - 创建场景呢? – Asunez
这是我思考的一点点,唯一的方法(我能想到)确定它不超过一定的内存量是在创建文件后检查它的实际内存。但是,您可以将初始代码更改为减去56个字节而不是54个,然后包含来自我的代码的image_statistics检查,并且只在图像在减去56个字节后不符合您的要求时才执行图像去除和再生。此时图像再生实际发生的频率将比原来提供的代码少得多。 – BRRRRR