in

mapa de bits: ¿cuál es la diferencia entre bisizeimage, bisize y bfsize?

apple touch icon@2

bfSize es el tamaño de archivo completo de la imagen de mapa de bits.El tamaño de archivo de una imagen de mapa de bits se compone de dos partes:

  • a encabezamiento parte (con información general sobre el archivo = bfOffBits)
  • y el parte de la imagen (donde se almacena la información de píxeles = biSizeImage)

Por tanto, tenemos la siguiente estructura

bfSize = bfOffBits + biSizeImage 

Además, bfOffBits (los encabezamiento parte) se puede dividir aún más en

  • a encabezado del archivo y
  • un encabezado de información (biTamaño)

Por lo tanto, también se puede escribir como

bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + biSizeImage

Dado que (según la definición actual de BMP) el tamaño de BITMAPFILEHEADER es exactamente 14 bytes y el tamaño de BITMAPINFOHEADER es exactamente 40 bytes, esto también podría escribirse como

bfSize = 14 + 40 + biSizeImage

o

bfSize = 54 + biSizeImage

Sin embargo, esto sería una mala práctica, ya que codificar ‘números mágicos’ generalmente está mal visto.

Pero miremos biSizeImage. El tamaño del archivo de la imagen en sí está compuesto, en términos generales, por el profundidad del color * ancho * altura. La profundidad de color en un BMP de 24 bits es de 3 bytes por píxel (valores de 0 a 255 para azul, verde y rojo, respectivamente), lo que se denomina triple RGB. Información adicional para expertos: los valores de los tres colores se guardan en el orden de azul, verde, rojo; busque la palabra clave LittleEndianness para obtener más información sobre ese tema. El estándar BMP también agrega ceros como relleno si el ancho de la imagen no es divisible por 4 bytes.

Ligeramente confuso, como han señalado otros, ahora tienes que multiplicar el tamaño en píxeles con el profundidad en bytes. Por lo tanto, tenemos

biSizeImage = (biWidth * sizeof(RGBTRIPLE) + padding) * abs(biHeight) 

que le dará el tamaño final en bytes de la imagen.

Entonces, para concluir:

  • biSizeImage = el tamaño del archivo en bytes del imagen parte de un BMP
  • biTamaño = el tamaño del archivo en bytes del encabezado de información parte de un encabezado BMP
  • bfsize = el tamaño del archivo en bytes del BMP completo (incluido el encabezado y la imagen)

Puede encontrar una buena descripción general de la estructura de un BMP aquí.

Editar: corrección agregada (gracias a @MotherBrain)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

60 107635 1568620292

Diferencia entre TCP y UDP

CcLCUv8AK2arvi9LZKZKCP 1200 80

Consejos de PlayerUnknown’s Battlegrounds: 10 consejos esenciales de PUBG para mantenerse con vida y ganar esa cena de pollo