bitmap - Create BMP file of given size in Python 3 -


i trying create bmp file in python of given exact size. need size accuracy down byte, , i'm having problems generating image. i'm using pillow library follows:

img = image.new('rgb', (1, size//4), "black") pixels = img.load()  in range(img.size[0]):     j in range(img.size[1]):         pixels[i,j] = (i, j, 1)  img.save("image.bmp") 

where size equal 1*1024*1024 = 1048576 (1mb size calculated bytes). however, created file bit larger - has 1048630 bytes. suppose it's because of bitmap header file, when try substract header size general size:

img = image.new('rgb', (1, (size-54)//4), "black")

the size of file generated 1048576 - 2 bytes out of nowhere.

how can calculate size provide when creating bmp files? content of such file can random, doesn't matter me.

assuming want file resized 1048574 bytes if exceeds value:

from pil import image import os stat import st_size  ############## code below ##################  size = 1*1024*1024 img = image.new('rgb', (1, (size)//4), "black") pixels = img.load() in range(img.size[0]):     j in range(img.size[1]):         pixels[i,j] = (i, j, 1) img.save("image.bmp")  ############# code above ##################  image_statistics = os.stat("image.bmp") print("initial image size: ", image_statistics[st_size])  difference = image_statistics[st_size] - size  if difference > 0:     os.remove("image.bmp") #delete first attempt.     img = image.new('rgb', (1, (size - difference)//4), "black") #regenerate     pixels = img.load() # note: segment same initial code.     in range(img.size[0]):         j in range(img.size[1]):             pixels[i,j] = (i, j, 1)     img.save("image.bmp") #file saved new size.      image_statistics = os.stat("image.bmp")     print("new image size: ", image_statistics[st_size]) 

output:

initial image size: 1048630

new image size: 1048574


Comments