Red de conocimientos turísticos - Información de alquiler - ¿Qué significan los formatos de imagen jpg, gif, jpeg, png y bmp?

¿Qué significan los formatos de imagen jpg, gif, jpeg, png y bmp?

El formato JPG es el formato de archivo de imagen más utilizado. Fue desarrollado por una alianza de desarrollo de software. Es un formato de compresión con pérdida que puede comprimir imágenes en un pequeño espacio de almacenamiento, por lo que se perderá información repetida o sin importancia. Es fácil causar daños a los datos de la imagen. En particular, utilizar una relación de compresión demasiado alta reducirá significativamente la calidad de la imagen final descomprimida.

Si buscas imágenes de alta calidad, no es recomendable utilizar un ratio de compresión demasiado alto.

Pero la tecnología de compresión JPEG es muy avanzada. Utiliza compresión con pérdida para eliminar datos de imagen redundantes, de modo que puede mostrar imágenes muy ricas y vívidas mientras obtiene una relación de compresión extremadamente alta. Espacio mínimo en disco para una mejor calidad de imagen.

Y JPEG es un formato muy flexible que tiene la función de ajustar la calidad de la imagen, permite comprimir archivos con diferentes relaciones de compresión y admite múltiples niveles de compresión. La relación de compresión suele estar entre 10:1 y 40. : 1, cuanto mayor sea la relación de compresión, menor será la calidad; por el contrario, cuanto menor sea la relación de compresión, mejor será la calidad. Por ejemplo, un archivo de mapa de bits BMP de 1,37 Mb se puede comprimir a 20,3 KB, encontrando un equilibrio entre la calidad de la imagen y el tamaño del archivo.

El formato JPEG comprime principalmente información de alta frecuencia, retiene bien el color de la información, es adecuado para su uso en Internet, puede reducir el tiempo de transmisión de imágenes, admite colores verdaderos de 24 bits y también es comúnmente utilizado cuando se requiere un tono continuo.

GIF es un formato estándar para comprimir imágenes con colores planos y detalles nítidos, como dibujos lineales, logotipos o ilustraciones con texto.

El GIF se divide en dos tipos: GIF estático y GIF animado. Admite imágenes de fondo transparentes y es adecuado para una variedad de sistemas operativos. El "volumen" es muy pequeño. en formato GIF. De hecho, GIF guarda varias imágenes en un archivo de imagen para formar una animación, por lo que, en última instancia, GIF sigue siendo un formato de archivo de imagen. Pero GIF sólo puede mostrar 256 colores.

GIF se divide principalmente en dos versiones, a saber, GIF 89a y GIF 87a:

GIF 87a: es la versión desarrollada en 1987

GIF 89a: es de 1989 Versión desarrollada en 2016. En esta versión, el documento GIF se amplía en cuatro bloques, incluidos bloques de control de gráficos, anotaciones, descripciones e interfaces de programación de aplicaciones, y brinda soporte para colores transparentes y animación de múltiples cuadros

Formato GIF. Popular desde su lanzamiento por CompuServe en 1987 debido a su pequeño tamaño e imágenes relativamente claras, que eran particularmente adecuadas para la lenta Internet inicial. Utiliza tecnología de compresión sin pérdidas para reducir el tamaño del archivo y al mismo tiempo mantener la calidad de la imagen siempre que la imagen no supere los 256 colores. (Por supuesto, también existen algunas tecnologías de piratería que pueden superar la limitación de 256 colores bajo ciertas condiciones y ver colores reales). Sin embargo, la limitación de 256 colores limita en gran medida el alcance de la aplicación de archivos GIF, como las cámaras en color. (Por supuesto, las fotografías de cámaras en color comprimidas sin pérdidas no son adecuadas para su transmisión por Internet). Por otro lado, el formato JPG, que destaca por las imágenes con mucho color, se queda corto cuando se trata de líneas simples. Por lo tanto, el formato GIF se utiliza a menudo para imágenes como gráficos, botones y otras imágenes que requieren sólo una pequeña cantidad de color (como fotografías en blanco y negro).

PNG es un formato de almacenamiento de archivos de imágenes desarrollado a mediados de la década de 1990 para reemplazar los formatos de archivos GIF y TIFF y al mismo tiempo agregar algunas características que el formato de archivo GIF no tenía. El formato de gráficos de red portátil (PNG), que lleva el nombre del no oficial "PNG's Not GIF", es un formato de almacenamiento de archivos de mapa de bits, que se pronuncia "ping". PNG se utiliza para almacenar imágenes en escala de grises (hasta 16 bits de profundidad), imágenes en color (hasta 48 bits de profundidad) y datos de canal alfa (hasta 16 bits de profundidad).

Los archivos de imagen PNG se utilizan comúnmente en programas JAVA, páginas web o programas S60 debido a su alta tasa de compresión y su pequeño tamaño de archivo.

Las imágenes en color pueden admitir 256 colores utilizando una tabla o paleta de búsqueda de colores.

Rendimiento de lectura y escritura de transmisión (transmisión): el formato de archivo de imagen permite la lectura y escritura continua de datos de imagen, lo cual es muy adecuado para generar y mostrar imágenes durante la comunicación.

Visualización progresiva: Esta función permite mostrar el archivo de imagen en el terminal mientras se transmite a través del enlace de comunicación, mostrando primero el contorno completo, y luego mostrando gradualmente los detalles de la imagen, es decir, mostrando primero la imagen de baja resolución y luego aumente gradualmente la resolución.

Transparencia: Esta característica hace que ciertas partes de la imagen sean invisibles y se utiliza para crear imágenes únicas.

Información auxiliar: Esta función se puede utilizar para almacenar algunos comentarios de texto en el archivo de imagen.

Independiente del entorno hardware y software del ordenador.

Utiliza compresión sin pérdidas.

El formato de archivo PNG agrega las siguientes características que no se encuentran en el formato de archivo GIF:

Imágenes en color verdadero con 48 bits por píxel.

Imagen en escala de grises con 16 bits por píxel.

Se pueden añadir canales alfa a imágenes en escala de grises y en color verdadero.

Añade información gamma a la imagen.

Detecta archivos corruptos mediante códigos de redundancia cíclica (CRC).

La visualización de aproximaciones sucesivas acelera la visualización de la imagen.

Kit de herramientas estándar de lectura/escritura.

Un archivo puede almacenar varias imágenes.

BMP es un formato de archivo de imagen independiente del hardware que se utiliza ampliamente. Utiliza un formato de almacenamiento de mapa de bits y no utiliza ninguna compresión excepto la profundidad de imagen opcional, por lo que los archivos BMP ocupan mucho espacio. La profundidad de imagen de los archivos BMP se puede seleccionar entre lbit, 4 bits, 8 bits y 24 bits. Cuando un archivo BMP almacena datos, la imagen se escanea de izquierda a derecha y de abajo hacia arriba.

Dado que el formato de archivo BMP es el estándar para intercambiar datos relacionados con gráficos en entornos Windows, el software de imágenes de gráficos que se ejecuta en entornos Windows admite el formato de imagen BMP.

Un archivo de imagen BMP típico consta de cuatro partes:

1: estructura de datos del encabezado del archivo de mapa de bits, que contiene el tipo de archivo de imagen BMP, el contenido de visualización y otra información.

2: estructura de datos de información de mapa de bits, incluido el ancho y alto de la imagen BMP, el método de compresión y la información de color definida.

3: Paleta, esta parte es opcional, algunos mapas de bits; requieren una paleta, y algunos mapas de bits, como las imágenes en color verdadero (BMP de 24 bits), no requieren una paleta

4: datos de mapa de bits, esta parte del contenido se basa en el mapa de bits BMP; La cantidad de bits varía. En imágenes de 24 bits, se usa RGB directamente, mientras que otras de menos de 24 bits usan el valor del índice de color de la paleta.

Tipos de mapas de bits:

Actualmente existen dos tipos de mapas de bits, a saber: mapas de bits dependientes del dispositivo (DDB) y mapas de bits independientes del dispositivo (DIB). Los mapas de bits DDB eran comunes y, de hecho, únicos en los inicios de Windows (anteriores a Windows 3.0). Sin embargo, con el avance de la tecnología de fabricación de pantallas y la diversificación de los dispositivos de visualización, han comenzado a aparecer algunos problemas inherentes a los mapas de bits DDB. Por ejemplo, no puede almacenar (u obtener) la resolución del dispositivo original en el que se creó esta imagen, por lo que la aplicación no puede determinar rápidamente si el dispositivo de visualización del cliente es adecuado para mostrar esta imagen. Para abordar este desafío, Microsoft creó el formato de mapa de bits DIB.

La resolución del dispositivo original.

Esta información se almacena en una estructura BITMAPINFO, que consta de una estructura BITMAPINFOHEADER y dos o más estructuras RGBQUAD. La estructura RGBQUAD identifica los datos de color utilizados por un píxel.

Los mapas de bits DIB también vienen en dos formas: DIB ascendente y DIB de arriba hacia abajo. El origen de un DIB de abajo hacia arriba está en la esquina inferior izquierda de la imagen, mientras que el origen de un DIB de arriba hacia abajo está en la esquina superior izquierda de la imagen.

Si el valor de altura del DIB (identificado por el miembro biHeight de la estructura BITMAPINFOHEADER) es positivo, el DIB es un DIB de abajo hacia arriba; si el valor de altura es negativo, el DIB es un DIB de arriba hacia abajo; Nota: Los mapas de bits DIB de arriba hacia abajo no se pueden comprimir.

El formato de color del mapa de bits se calcula mediante el valor del panel de color (plano) y el número de bits de color. El número de bits de color es siempre 1 y el número de bits de color puede ser 1, 4. , 8, 16, 24 O uno de 32. Si es 1, significa que el mapa de bits es un mapa de bits monocromático (Nota del traductor: generalmente es un mapa de bits en blanco y negro con solo dos colores; por supuesto, también puede tener dos colores especificados, si es 4, significa); que el mapa de bits La imagen es un mapa de bits VGA, si es 8, 16, 24 o 32, significa que el mapa de bits es un mapa de bits generado por otro dispositivo. Si una aplicación desea obtener los valores de bits de color (o profundidad de bits) del dispositivo de visualización (o impresora) actual, llame a la función API GetDeviceCaps() y establezca el segundo parámetro en BITSPIXEL.

La resolución del dispositivo de visualización se expresa en píxeles por metro. La aplicación puede obtener la resolución horizontal del dispositivo de visualización o la impresora mediante los siguientes tres pasos:

1. Llame a GetDeviceCaps. ( ), especificando el segundo parámetro como HORZRES. Llame a la función GetDeviceCaps() nuevamente, especificando HORZSIZE como segundo parámetro.

3. Divida el primer valor de retorno por el segundo valor de retorno. Es decir, DetDeviceCaps(hDC,HORZRES)/GetDeviceCaps(hDC,HORZSIZE);

La aplicación también puede utilizar los mismos tres pasos para obtener la resolución vertical del dispositivo, la única diferencia es reemplazar HORZRES con VERTRES y HORZSIZE Reemplazados con VERTSIZE y eso es todo.

La paleta se almacena en una matriz de estructuras RGBQUAD, que muestra los valores de los componentes rojo, verde y azul para cada color. Cada índice en la matriz de bits corresponde a una entrada de paleta (es decir, una estructura RGBQUAD) y la aplicación convierte el valor del índice de píxel en un valor RGB de píxel (el color verdadero del píxel) en función de esta correspondencia. Una aplicación también puede obtener el tamaño de la paleta del dispositivo de visualización actual llamando a la función GetDeviceCaps() (simplemente establezca el segundo parámetro de la función en NUMCOLORS).

La API de Win32 admite la compresión de datos de bits (solo disponible para mapas de bits DIB ascendentes de 8 y 4 bits). La compresión se realiza mediante un esquema de codificación de longitud de ejecución (RLE), que utiliza dos bytes para describir una sintaxis, el primer byte representa el número de píxeles repetidos y el segundo byte representa el valor de índice del píxel repetido. Para obtener más información sobre mapas de bits comprimidos, consulte la descripción de la estructura BITMAPINFOHEADER.

Una aplicación puede crear un mapa de bits DIB a partir de un mapa de bits DDB inicializando algunas estructuras necesarias y luego llamando a la función GetDIBits(). Sin embargo, es posible que algunos dispositivos de visualización no admitan esta función, lo que puede determinar llamando a la función GetDeviceCaps() (la función GetDeviceCaps() se llama con RC_DI_BITMAP especificado como el indicador RASTERCAPS).

Las aplicaciones pueden usar DIB para configurar píxeles en un dispositivo de visualización llamando a la función SetDIBitsToDevice() o llamando a la función StretchDIBits(). Del mismo modo, es posible que algunos dispositivos de visualización no admitan las dos funciones anteriores, en cuyo caso puede especificar RC_DIBTODEV como indicador RASTERCAPS y luego llamar a la función GetDeviceCaps() para determinar si el dispositivo admite la función SetDIBitsToDevice().

También puede especificar RC_STRETCHDIB como indicador RASTERCAPS y luego llamar a la función GetDeviceCaps() para determinar si el dispositivo admite la función StretchDIBits().

Si la aplicación simplemente quiere mostrar un mapa de bits DIB existente, simplemente puede llamar a la función SetDIBitsToDevice(). Por ejemplo, un programa de hoja de cálculo puede abrir un archivo de gráfico y luego llamar a la función SetDIBitsToDevice() en la ventana para mostrar el gráfico en la ventana. Sin embargo, si su aplicación dibuja un mapa de bits repetidamente, debe usar la función BitBlt() porque la función BitBlt() se ejecuta mucho más rápido que la función SetDIBitsToDevice().

Mapas de bits dependientes del dispositivo

La única razón por la que todavía se admiten mapas de bits dependientes del dispositivo (DDB) es por compatibilidad con el software anterior de Windows 3.0, por lo que si los programadores están desarrollando actualmente mapas de bits relacionados con gráficos programas, deberían intentar utilizar o generar mapas de bits en formato DIB.

Un mapa de bits DDB se describe mediante una única estructura BITMAP, cuyos miembros marcan información como el ancho, el alto y el formato de color del dispositivo del mapa de bits.

También hay dos tipos de mapas de bits DDB: DDB desplegable y DDB no desplegable. Un mapa de bits DDB descartable es un mapa de bits DDB que se borra de la memoria cuando la memoria es baja y el mapa de bits no se selecciona para su inclusión en la tabla de descripción de dispositivos (DC) (es decir, está en desuso). ) La función API CreateDiscardableBitmap() se puede utilizar para crear un mapa de bits descartable. Las funciones CreateBitmap(), CreateCompatibleBitmap() y CreateBitmapIndirect() se pueden utilizar para crear mapas de bits no desechables.

Una aplicación puede crear un mapa de bits DDB a partir de un mapa de bits DIB inicializando algunas estructuras necesarias y luego llamando a la función CreateDIBitmap(). Si se especifica el indicador CBM_INIT al llamar a esta función, la llamada equivale a llamar a CreateCompatibleBitmap() para crear un mapa de bits DDB en el formato actual del dispositivo y luego llamar a SetDIBits() para convertir el formato DIB al formato DDB. (Es posible que algunos dispositivos no admitan la función SetDIBits(); puede especificar RC_DI_BITMAP como indicador RASTERCAPS y luego llamar a la función GetDeviceCaps() para determinar).

Estructura de datos correspondiente:

1: Composición del archivo BMP

El archivo BMP consta de cuatro partes: encabezado del archivo, encabezado de información de mapa de bits, información de color y datos gráficos. .

2: encabezado del archivo BMP (14 bytes)

La estructura de datos del encabezado del archivo BMP contiene información como el tipo de archivo BMP, el tamaño del archivo y la posición inicial del mapa de bits.

La estructura se define de la siguiente manera:

typedef struct tagBITMAPFILEHEADER

{

WORDbf Tipo // El tipo de archivo de mapa de bits debe; ser BM (0-1 bytes)

DWORD bfSize; // Tamaño del archivo de mapa de bits en bytes (2-5 bytes)

WORD bfReserved1 // Las palabras reservadas del archivo de mapa de bits deben; ser 0 (6-7 bytes)

WORD bfReserved2; // Las palabras reservadas del archivo de mapa de bits deben ser 0 (8-9 bytes)

DWORD bfOffBits; datos de mapa de bits La posición inicial de los datos de mapa de bits, representada por el desplazamiento (10-13 bytes) relativo al mapa de bits (en bytes)

// Desplazamiento del encabezado del archivo (en bytes)

}BITMAPFILEHEADER;

3: encabezado de información de mapa de bits (40 bytes)

Los datos del encabezado de información de mapa de bits BMP se utilizan para especificar el tamaño del mapa de bits y otra información.

typedef struct tagBITMAPINFOHEADER{

DWORD biSize; // El número de bytes ocupados por esta estructura (14-17 bytes)

LONG biWidth; ancho del mapa de bits, en píxeles (18-21 bytes)

LONG biHeight; // La altura del mapa de bits, en píxeles (22-25 bytes)

WORD biPlanes / / El nivel del dispositivo de destino debe ser 1 (26-27 bytes)

WORD biBitCount; // El número de bits por píxel debe ser 1 (dos colores), (28-29 bytes)

// Uno de 4 (16 colores), 8 (256 colores) o 24 (color verdadero)

DWORD biCompression; // Tipo de compresión de mapa de bits, debe ser 0 (sin compresión), (30-33 bytes)

// Uno de 1 (tipo de compresión BI_RLE8) o 2 (tipo de compresión BI_RLE4)

DWORD biSizeImage // Tamaño del mapa de bits, en bytes (34- 37 bytes)

LONG biXPelsPerMeter; // Resolución horizontal de mapa de bits, en píxeles por metro (38-41 bytes)

LONG biYPelsPerMeter; // Resolución vertical de mapa de bits, píxeles por metro (42 -45 bytes)

DWORD biClrUsed; // Número de colores en la tabla de colores realmente utilizados por el mapa de bits (46-49 bytes)

DWORD biClrImportant; // Número importante de colores. durante la visualización de mapa de bits (50-53 bytes)

}BITMAPINFOHEADER;

4: Tabla de colores

La tabla de colores se utiliza para describir los colores en el mapa de bits. Tiene muchas entradas. Cada entrada es una estructura de tipo RGBQUAD y define un color.

La estructura RGBQUAD se define de la siguiente manera:

typedef struct tagRGBQUAD {

BYTE rgbBlue // El brillo del azul (rango de valores 0-255)

BYTE; rgbGreen; // Brillo verde (rango de valores 0-255)

BYTE rgbRed; // Brillo rojo (rango de valores 0-255)

BYTE rgbReserved // Reservado, debe ser 0

}RGBQUAD;

El número de datos de estructura RGBQUAD en la tabla de colores está determinado por biBitCount:

Cuando biBitCount=1, 4, 8, hay son 2, 16,256 entradas de tabla;

Cuando biBitCount=24, no hay ninguna entrada de tabla de colores.

El encabezado de información del mapa de bits y la tabla de colores constituyen la información del mapa de bits. La estructura BITMAPINFO se define de la siguiente manera:

typedef struct tagBITMAPINFO {

BITMAPINFOHEADER bmiHeader; Encabezado de información de mapa de bits

RGBQUAD bmiColors[1] // Tabla de colores

}BITMAPINFO;

5: Datos de mapa de bits

Datos de mapa de bits se registra para cada píxel del mapa de bits en orden de izquierda a derecha dentro de la línea de escaneo y de abajo hacia arriba entre las líneas de escaneo. El número de bytes ocupados por el valor de píxel en el mapa de bits:

Cuando biBitCount = 1, 8 píxeles ocupan 1 byte

Cuando biBitCount = 4, 2 Un píxel ocupa 1 byte;

Cuando biBitCount=8, 1 píxel ocupa 1 byte

Cuando biBitCount=24, 1 píxel ocupa 1 byte;

Cuando biBitCount=1, 1 píxel; ocupa 1 byte;

Cuando biBitCount = 1, 1 píxel ocupa 1 byte;

Cuando biBitCount = 1, 1 píxel ocupa 1 byte; 24, 1 píxel ocupa 3 bytes;

Windows estipula que el número de bytes ocupados por una línea de escaneo debe ser múltiplo de 4 (es decir, de longitud), y el número de bytes inferiores a 4 será se llenará con ceros,

biSizeImage = ((((bi.biWidth * bi.biBitCount) + 31) & amp; ~31)/ 8)* bi.biBitCount) + 31) & amp; 31) / 8 )biHeight;

Ejemplo de datos específicos:

Por ejemplo, el comienzo del archivo BMP:

4D42 4690 0000 0000 0000 4600 0000 2800 0000 8000 0000 9000 0000 0100*1000 0300 0000 0090 0000 A00F 0000 A00F 0000 0000 0000 0000 0000 0000 0000 0000 0000*00F8 E00700 0000 1F00 0000 0000 0000 000 0 0000*02F1 84F1 04F1 84F1 84F1 84F1 84F1 06F2 84F1 06F2 04F2 86F2 06F2 86F2 86F2 86F2. ... ....

Los archivos BMP se pueden dividir en cuatro partes: encabezado del archivo de mapa de bits, encabezado de información de mapa de bits, placa de color y matriz de datos de imagen, separados por * en la figura anterior.

1. Encabezado del archivo de imagen

1) 1: (El número aquí representa "palabra", que son dos bytes, lo mismo a continuación) Encabezado del archivo de imagen. 0x4D42 = 'BM', el formato BMP compatible con Windows.

2) 2-3: El tamaño completo del archivo. 4690 0000, que es 00009046h = 36934.

3) 4-5: Reservado, debe establecerse en 0.

4) 6-7: El desplazamiento desde el principio del archivo hasta los datos del mapa de bits. 4600 0000, que es 00000046h = 70, el encabezado del archivo tiene 35 palabras = 70 bytes.

2. Encabezado de información del mapa de bits

5) 8-9: La longitud del encabezado de información del mapa de bits.

6) 10-11: Ancho del mapa de bits, la unidad es píxeles. 8000 0000, que indica 00000080h=128.

7) 12-13: Altura del mapa de bits (píxeles). 9000 0000, representa 00000090h=144.

8) 14: El número de planos de bits del mapa de bits, este valor siempre es 1. 0100 significa 0001h=1.

9) 15: Número de bits por píxel. Hay 1 (monocromo), 4 (16 colores), 8 (256 colores), 16 (64.000 colores, color intenso), 24 (16 millones de colores, color verdadero), 32 (4096 millones de colores, color verdadero mejorado). 1000 es 0010h=16.

10) 16-17: Descripción de la compresión: 0 (sin compresión), 1 (RLE 8, compresión RLE de 8 bits), 2 (RLE 4, compresión RLE de 4 bits), 3 (campos de bits, almacenamiento de campo de bits). T408 utiliza almacenamiento de campo de bits, utiliza dos bytes para representar un píxel y el campo de bits se asigna como r5b6g5. 0300 0000 en la imagen es 00000003h=3.

11) 18-19: El tamaño de los datos del mapa de bits, expresado en bytes, debe ser múltiplo de 4, numéricamente igual a (≥ 4 veces el ancho mínimo del mapa de bits) x alto del mapa de bits x por número de píxeles. 0090 0000 es 0000 9000h=80 x 90 x 2h=36864.

12) 20-21: Resolución horizontal, expresada en píxeles/metro. a00f 0000 es 0000 0FA0h=4000.

13) 22-23: Resolución vertical, expresada en píxeles/metro. A00F 0000 es 0000 0FA0h=4000.

14) 24-25: El número de índices de color utilizados por el mapa de bits. Si se establece en 0, se utilizan todos los elementos de la paleta.

15) 26-27: Números de índice de color que son importantes para la visualización de imágenes. Si se establece en 0, todos los colores son importantes.

III Paleta

16) 28 - .... (inseguro): Especificaciones de la paleta. Para cada entrada en la paleta, el valor RGB se describe de la siguiente manera:

1 byte representa el componente azul

1 byte representa el componente verde

1 byte para el componente rojo

1 byte para el carácter de relleno (establecido en 0)

Esta paleta no es adecuada para imágenes de color verdadero de 24 bits, porque los valores RGB en el El mapa de bits representa el color de cada píxel.

Por ejemplo, la paleta es 00F8 0000 E007 0000 1F00 0000 0000 0000, donde:

00FB 0000 es FB00h=1111100000000000 (binario), que es una máscara para el componente azul.

E007 0000 es 07E0h=0000011111100000 (binario), que es la máscara de la parte verde.

1F00 0000 es 001Fh=0000000000011111 (binario), que es la máscara del componente rojo.

0000 0000 siempre se establece en 0.

Los componentes del color se obtienen "sumando" la máscara al valor del píxel y desplazándolo. Al observar la máscara, puede comprender el hecho de que en los dos bytes de 16 bits de cada valor de píxel, los bits 5, 6 y 5 de mayor a menor son los valores componentes de r, g y b respectivamente. Después de sacar los valores de los componentes, multiplique los valores r, g y b por 8, 4 y 8 respectivamente. Luego puede completar el primer componente en un byte y luego combinar estos tres bytes de acuerdo con rgb y colocarlos. en la memoria (igual (o viceversa), se puede convertir al formato BMP estándar de 24 bits.

4. Matriz de datos de imagen

17) 27 (sin paleta) -....: Cada dos bytes representan un píxel. El primer byte de la matriz representa el píxel en la esquina inferior izquierda del mapa de bits y el último byte representa el píxel en la esquina superior derecha del mapa de bits.

5. Algoritmo de almacenamiento

Los archivos BMP suelen estar sin comprimir, por lo que suelen ser mucho más grandes que los formatos de archivos de imagen comprimidos de la misma imagen. Por ejemplo, un archivo de 800×600 y 24 bits ocupará casi 1,4 MB de espacio. Por lo tanto, generalmente no son adecuados para la transmisión a través de Internet u otros medios de baja velocidad o capacidad limitada. Dependiendo de la profundidad del color, un píxel de la imagen puede representarse mediante uno o más bytes, con un tamaño determinado por n/8 (n es la profundidad de bits, 1 byte contiene 8 bits de datos). Los navegadores de imágenes, etc. calculan el color de un píxel basándose en el valor ASCII de los bytes y luego leen el valor correspondiente de la paleta. Consulte la sección Archivos de mapa de bits a continuación para obtener más detalles. El número de bytes de un mapa de bits con n bits y 2n colores se puede calcular aproximadamente usando la siguiente fórmula: El tamaño del archivo BMP es aproximadamente igual a 54+4*2 elevado a la enésima potencia + (w*h*n)/8< / p>

, donde la altura y el ancho están en píxeles. Tenga en cuenta que 54 en la fórmula anterior es el encabezado del archivo de mapa de bits y también es el tamaño de la paleta. También tenga en cuenta que esto es solo una aproximación para una imagen de mapa de bits de n bits y, si bien puede haber hasta 2n colores, es posible que una imagen en particular no los use todos. Dado que la paleta solo define los colores utilizados en la imagen, la paleta real será menor que eso. Para comprender cómo se obtienen estos valores, consulte la sección sobre formatos de archivo a continuación. Habrá algunas ligeras diferencias entre el tamaño calculado en función de varios parámetros de la imagen y el tamaño real del archivo debido a factores determinados por el propio algoritmo de almacenamiento.