Red de conocimiento informático - Conocimiento de la instalación - ¿Qué significan los formatos jpg, gif, jpeg, PNG, png y bmp?

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

El formato JPG es el formato de archivo de imagen más utilizado y fue desarrollado por la Asociación de Desarrollo de Software. Es un formato de compresión con pérdida que puede comprimir imágenes en un espacio de almacenamiento pequeño. Los datos repetidos o sin importancia en la imagen se perderán, causando fácilmente daños a los datos de la imagen. Especialmente si la relación de compresión es demasiado alta, la calidad de la imagen final restaurada descomprimida se reducirá significativamente.

Si buscas imágenes de alta calidad, no utilices una relación de compresión demasiado alta.

Sin embargo, la tecnología de compresión JPEG es muy avanzada. Utiliza compresión con pérdida para eliminar datos de imágenes redundantes y puede mostrar imágenes muy ricas y vívidas al mismo tiempo. En otras palabras, puede obtener una mejor calidad de imagen con el menor espacio en disco.

Y JPEG es un formato muy flexible, con la función de ajustar la calidad de la imagen, permitiendo comprimir archivos en diferentes relaciones de compresión y admitiendo 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. Por supuesto, también puede encontrar un equilibrio entre la calidad de la imagen y el tamaño del archivo.

El formato JPEG comprime principalmente información de alta frecuencia y retiene bien la información de color. Es adecuado para Internet, puede reducir el tiempo de transmisión de imágenes, admite colores verdaderos de 24 bits y también se usa ampliamente en imágenes que requieren tonos continuos.

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

GIF se divide en GIF estático y GIF animado, admite imágenes de fondo transparentes y es adecuado para varios sistemas operativos. El "tamaño" es muy pequeño y muchas animaciones pequeñas en Internet están en formato GIF. De hecho, GIF guarda varias imágenes en un archivo de imagen para formar una animación, por lo que, después de todo, 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: producido en 1987.

GIF 89a: es la versión producida en 1989. En esta versión, el documento GIF se ha ampliado a cuatro bloques: bloque de control de gráficos, notas, descripción e interfaz de programación de aplicaciones, y brinda soporte para colores transparentes y animación de cuadros múltiples.

El formato GIF fue lanzado por CompuServe en 1987. Debido a que el formato GIF es pequeño y tiene imágenes relativamente claras, es particularmente adecuado para situaciones en las que la velocidad de Internet es inicialmente lenta y ha sido muy popular desde entonces. Utiliza tecnología de compresión sin pérdidas, que puede reducir el tamaño del archivo manteniendo la calidad de la imagen siempre que la imagen no supere los 256 colores. (Por supuesto, también existen algunas tecnologías de pirateo que superan la limitación de 256 colores bajo ciertas condiciones. Consulte True Color para obtener más detalles). 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 que utilizan tecnología de compresión sin pérdidas no son adecuadas para su transmisión a través de la red. Por otro lado, el formato JPG tiene un buen rendimiento en imágenes de muchos colores, pero no funciona bien en polilíneas simples. Por lo tanto, el formato GIF generalmente es adecuado para gráficos, botones, etc. que requieren solo unos pocos colores de imágenes (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 archivo GIF y TIFF. Algunas características que el formato de archivo GIF no tiene (PNG) toma su nombre del no oficial "PNG's Not GIF", un formato de almacenamiento de archivos de mapa de bits, que se pronuncia "ping". almacenado en PNG Cuando se almacenan imágenes en escala de grises, la profundidad de las imágenes en escala de grises puede ser de hasta 16 bits. Cuando se almacenan imágenes en color, la profundidad de las imágenes en color puede ser de hasta 48 bits. PNG utiliza compresión de datos sin pérdidas derivada del algoritmo LZ77.

Debido a su alta relación de compresión y tamaño de archivo pequeño, los archivos de imagen PNG se usan generalmente en programas JAVA, páginas web o programas S60. p>Se puede admitir mediante tablas o paletas de búsqueda de colores. Imagen en color de 256 colores.

Rendimiento de lectura/escritura fluido: el formato de archivo de imagen permite la lectura y escritura continua de datos de imagen, lo cual es ideal para generar. y mostrar imágenes durante la comunicación.

Visualización progresiva: esta función puede mostrar la imagen en el terminal mientras se transmite el archivo de imagen en el enlace de comunicación. Después de mostrar el contorno general de la imagen, los detalles de la imagen se muestran gradualmente, es decir, La imagen de baja resolución se muestra primero y luego aumenta gradualmente su resolución.

Transparencia: Esta habilidad hace que ciertas partes de una imagen no sean visibles, lo que puede usarse para crear algunas imágenes únicas.

Información auxiliar: esta función se puede utilizar para almacenar cierta información de anotación de texto en el archivo de imagen.

Independiente del entorno de software y hardware del ordenador.

Utiliza compresión sin pérdidas.

En el formato de archivo PNG, se deben agregar las siguientes características que no están disponibles en el formato de archivo GIF:

Cada píxel es una imagen en color verdadero de 48 bits.

Cada píxel es una imagen en escala de grises de 16 bits.

Puedes añadir canales alfa a mapas en escala de grises y en color verdadero.

Añade la información gamma de la imagen.

Utilice el Código de Redundancia Cíclica (CRC) para detectar archivos corruptos.

Modo de visualización de aproximación sucesiva que acelera la visualización de la imagen.

Kit de herramientas estándar de lectura/escritura.

Se pueden almacenar varias imágenes en un solo archivo.

BMP es un formato de archivo de imagen independiente de los dispositivos de hardware y muy utilizado. Utiliza un formato de almacenamiento de mapa de bits y no utiliza ninguna otra compresión excepto la profundidad de la imagen, 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. Al almacenar datos en un archivo BMP, la imagen se escanea de izquierda a derecha y de abajo hacia arriba.

Debido a que el formato de archivo BMP es el estándar para intercambiar datos relacionados con dibujos en el entorno Windows, todo el software de gráficos e imágenes que se ejecuta en el entorno 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, incluido 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, alto, método de compresión, color definido y otra información de la imagen BMP;

3: Paleta, esta parte es opcional, algunos mapas de bits requieren Paleta. algunos mapas de bits, como los mapas de color verdadero (BMP de 24 bits), no requieren una paleta;

4. El contenido de esta sección varía según la cantidad de bits utilizados en el mapa de bits BMP. RGB se usa directamente para mapas de bits de 24 bits, mientras que otros mapas de bits de menos de 24 bits usan valores de índice de color de la paleta.

Tipos de mapas de bits:

Existen dos tipos de mapas de bits, mapas de bits dependientes del dispositivo (DDB) y mapas de bits independientes del dispositivo (DIB). Los mapas de bits DDB eran muy comunes en los primeros sistemas Windows (antes de Windows 3.0), de hecho, eran únicos. Sin embargo, con el desarrollo de la tecnología de fabricación de pantallas y la diversificación de los dispositivos de visualización, comenzaron 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 solucionar este problema, Microsoft creó el formato de mapa de bits DIB.

Mapa de bits independiente del dispositivo

El mapa de bits DIB contiene la siguiente información de color y tamaño:

*El formato de color del dispositivo original (es decir, el dispositivo en que se creó la imagen).

*Resolución original del dispositivo.

*Paleta de dispositivos sin formato

*Una matriz de bits que representa un píxel con tres valores: rojo, verde y azul (RGB).

* Indicador de compresión de matriz que indica el esquema de compresión de datos (si es necesario).

La información anterior se almacena en la estructura BITMAPINFO, que consta de la estructura BITMAPINFOHEADER y dos o más estructuras RGBQUAD. La estructura BITMAPINFOHEADER contiene miembros que indican el tamaño de la imagen, el formato de color del dispositivo original y el esquema de compresión de datos. La estructura RGBQUAD identifica los datos de color utilizados por el píxel.

Los mapas de bits DIB también vienen en dos formas: DIB ascendente (de abajo hacia arriba) y DIB de arriba hacia abajo (de arriba hacia abajo). El origen del DIB de abajo hacia arriba está en la esquina inferior izquierda de la imagen, mientras que el origen del 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 en la estructura BITMAPINFOHEADER) es positivo, significa que el DIB es un DIB de abajo hacia arriba. Si el valor de altura es negativo, 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 plano de color y el recuento de bits de color. El valor del plano de color es siempre 1 y el valor de bits de color puede ser uno de 1, 4, 8, 16. , 24 y 32 . Si es 1, el mapa de bits es monocromático. Si es 4, significa que es un mapa de bits VGA. Si es 8, 16, 24 o 32 significa que es un mapa de bits generado por otros dispositivos. Si una aplicación desea obtener el valor de bits de color (o profundidad de bits) del dispositivo de visualización actual (o impresora), puede llamar a la función API GetDeviceCaps() y establecer 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 la función GetDeviceCaps() y especifique el segundo parámetro como HORZRES.

2. Llame a la función GetDeviceCaps() nuevamente y especifique el segundo parámetro como HORZSIZE.

3. Divida el primer valor de retorno por el segundo valor de retorno. Es decir: detdevicecaps(HDC,Horzres)/getdevicecaps(HDC,Horzsize);

Las aplicaciones también pueden usar los mismos tres pasos para obtener la resolución vertical del dispositivo, pero la única diferencia es reemplazar HORZRES con VERTRES, reemplace HORZSIZE por VERTSIZE.

La paleta se almacena en una matriz de estructuras RGBQUAD, que representan los valores de los componentes rojo, verde y azul de cada color. Cada índice en la matriz de bits corresponde a un elemento de la paleta (es decir, una estructura RGBQUAD), y la aplicación convertirá el valor del índice de píxeles en un valor RGB de píxeles (color de píxel real) en función de esta correspondencia. Las aplicaciones también pueden 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). El método de compresión es el esquema de codificación de longitud de ejecución (RLE). RLE 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 del í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 antes de llamar a la función GetDIBits(). Sin embargo, es posible que algunos dispositivos de visualización no admitan esta función. Esto se puede determinar llamando a la función GetDeviceCaps() (la función GetDeviceCaps() especifica RC_DI_BITMAP como el indicador de RASTERCAPS cuando se llama).

Una aplicación puede utilizar un DIB para configurar píxeles en un dispositivo de visualización llamando a la función SetDIBitsToDevice() o StretchDIBits(). Del mismo modo, es posible que algunos dispositivos de visualización no admitan ninguna de las funciones. En este 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 llamar a la función GetDeviceCaps() especificando RC_STRETCHDIB como indicador RASTERCAPS para determinar si el dispositivo admite la función StretchDIBits().

Si la aplicación sólo quiere mostrar un mapa de bits DIB existente, entonces sólo necesita llamar a la función SetDIBitsToDevice(). Por ejemplo, el software de hoja de cálculo puede abrir un archivo de gráfico y simplemente llamar a la función SetDIBitsToDevice() en la ventana para mostrar el gráfico en la ventana.

Pero si la aplicación quiere dibujar el mapa de bits repetidamente, debe usar la función BitBlt(), porque la velocidad de ejecución de la función BitBlt() es mucho más rápida que la función SetDIBitsToDevice().

Mapa de bits dependiente del dispositivo

La razón por la que el sistema aún admite mapas de bits dependientes del dispositivo (DDB) es solo por compatibilidad con el antiguo software Windows 3.0. Si un programador ahora quiere desarrollar un programa relacionado con mapas de bits, debería intentar utilizar o generar mapas de bits en formato DIB.

El mapa de bits DDB se describe mediante un mapa de bits de estructura única, los miembros de esta estructura indican el ancho, alto y formato de color del mapa de bits.

También existen dos tipos de mapas de bits DDB, DDB descartable y DDB no descartable. Un mapa de bits DDB descartable es un mapa de bits que se borrará de la memoria (es decir, se descartará) cuando el sistema se quede sin memoria y el mapa de bits no se seleccione en la tabla de contexto del dispositivo (DC). Una DDB no consumible es una DDB que el sistema no borrará sin importar cuánta memoria tenga. 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 que no se pueden descartar.

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, entonces esta llamada equivale a llamar a CreateCompatibleBitmap() para crear un mapa de bits DDB en el formato actual del dispositivo y luego llamar a la función 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: síntesis de archivos BMP

El archivo BMP consta de cuatro partes: encabezado de archivo, encabezado 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, la posición inicial del mapa de bits, etc.

La estructura se define de la siguiente manera:

etiqueta de estructura typedefBITMAPFILEHEADER

{

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

DWORD bfSize //El tamaño del archivo de mapa de bits, en bytes (2-5 bytes)

WORD bfreserved 1 //La palabra reservada del archivo de mapa de bits debe ser 0 ( 6-7 bytes).

WORD bfReserved2//Palabra reservada del archivo de mapa de bits, debe ser 0 (8-9 bytes)

DWORD bfOffBits//Posición inicial de los datos del mapa de bits, relativa al mapa de bits (10-13 bytes )

//El desplazamiento del encabezado del archivo se expresa en bytes.

} BITMAPFILEHEADER

3: encabezado del mapa de bits (40 bytes)

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

typedef struct tagBITMAPINFOHEADER {

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

Long double width //bit; El ancho de la imagen, en píxeles (18-21 bytes)

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

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

Word biBitCount//El número de bits necesarios para cada píxel debe ser 1 (dos colores), (28-29 bytes).

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

Compresión de doble palabra; //Tipo de compresión de mapa de bits, debe ser 0 (sin compresión) , (30-33 bytes).

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

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

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

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

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

DWORD biClrImportant// El número de colores importantes en la visualización del mapa de bits (50- 53 bytes)

} BITMAPINFOHEADER

4: Tabla de colores

La tabla de colores se utiliza para describir el color del mapa de bits. Tiene varias entradas de tabla, cada entrada es una estructura de tipo RGBQUAD y define un color. La definición de la estructura RGBQUAD es la siguiente:

typedef struct tagRGBQUAD {

Byte rgbBlue//Brillo del azul (el rango de valores es 0-255)

Sección de palabras rgbGreen//Brillo del verde (el rango de valores es 0-255)

Byte rgbRed//Brillo del rojo (el rango de valores es 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 el recuento de bibits = 1, 4, 8, hay 216256 respectivamente.

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

El encabezado 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:

etiqueta de estructura typedef BITMAPINFO {

BITMAPINFOHEADER bmiHeader//Título del mapa de bits.

p>

Colores RGBQUAD BMI[1]; //Tabla de colores

} BITMAPINFO

5: Datos de mapa de bits

Mapa de bits del registro de datos de mapa de bits Para cada valor de píxel, el orden de grabación es 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 un valor de píxel del mapa de bits:

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

Cuando biBitCount=4, dos píxeles ocupan 1 byte;

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

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

Windows estipula que el número de bytes ocupados por una línea de escaneo debe ser un múltiplo de

4 (es decir, largo), y cualquier número insuficiente se completa con 0.

imagen bisize =((((bi . bi ancho * bi . bibitcount)+31)& amp; ~ 31)/8)* bi .

Datos específicos. Ejemplo:

Por ejemplo, al principio del archivo BMP:

4d 42 4690 0000 0000 0000 4600 0000 2800 0000 0000 9000 0000 0000 01000 0300 0000 0000 0090 0000 0 000 a0f 000 0000 000 000 000 000 a000 000 000 000 00 000 00 000 000 00 000 000 00 000 00 000 00 00 000 00 00 000 00 00 00 00. ....

Los archivos BMP pueden ser dividido en Las cuatro partes del encabezado del archivo de mapa de bits, el encabezado de información del mapa de bits, la placa de color y la matriz de datos de la imagen están separadas por * en la figura anterior.

Primero, encabezado del archivo de imagen

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

2)2-3: Tamaño total del archivo. 4690 0000,00009046h=36934.

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

4)6-7: El desplazamiento entre el archivo y los datos del mapa de bits. 4600 0000 es 00000046h=70 El encabezado del archivo anterior tiene 35 palabras = 70 bytes.

2. Encabezado de mapa de bits

5) Longitud del encabezado de mapa de bits de 8-9.

6)10-11: Ancho del mapa de bits, en píxeles. 8000 0000 000080h = 128.

7)12-13: Altura del mapa de bits, en píxeles. 900000000,0000090h = 144.

8)14: El número de mapas de bits es siempre 1. 0100, 0001h=1.

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

10)16-17: Descripción de la compresión: Hay 0 (sin compresión), 1 (RLE 8, compresión RLE de 8 bits), 2 (RLE 4, compresión RLE de 4 bits), 3 ( campo de bits, almacenamiento de campo de bits). RLE simplemente utiliza el método de número de píxeles + valor de píxel para la compresión. T408 utiliza almacenamiento de campo de bits, dos bytes representan un píxel y el campo de bits se asigna como r5b6g5. 0300 0000 en la imagen es 0000003h=3.

11)18-19: El tamaño de los datos del mapa de bits expresados ​​en bytes debe ser múltiplo de 4, numéricamente igual a (≥4 múltiplo mínimo del ancho del mapa de bits) × altura del mapa de bits × número de píxeles por dígitos. 0090 0000 es 0009000h = 80× 90× 2h = 36864.

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

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

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

15)26-27: el número de índices de color que tienen un impacto importante en la visualización de la imagen. Si es 0, todo es importante.

Tercero, placa de color

16)28- ...(incierto): Especificación de la placa de color. Para cada entrada en la paleta, el valor RGB se describe de la siguiente manera:

El componente azul es de 1 byte.

El componente verde es de 1 byte.

El componente rojo es de 1 byte.

1 byte para relleno (establecido en 0).

Para imágenes en color verdadero de 24 bits, no se utilizan muestras porque los valores RGB en el mapa de bits representan el color de cada píxel.

Por ejemplo, la paleta de colores es 00f 8 0000 e 0070001f 00 000000000000, donde:

00FB 0000 es fb00h = 1111100000000 (binario), que es la máscara del componente azul.

E007 0000 es 07e0h = 0000111111100000 (binario), que es la máscara del componente verde.

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

000000000 siempre se establece en 0.

Los valores de los componentes de cada color se pueden obtener realizando una operación AND en los valores de máscara y píxel, y luego realizando una operación de desplazamiento. Si observa la máscara, puede comprender que, de hecho, 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 de los componentes 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, complete el primer componente en un byte y luego coloque estos tres bytes en la memoria de acuerdo con la combinación rgb ( también en orden inverso) Convertir al formato BMP estándar de 24 bits.

Cuarto, 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 el formato de archivo de imagen comprimido de la misma imagen. Por ejemplo, 24 bits 800 × 600 ocupa 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 se puede representar mediante uno o más bytes, determinados 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. Para obtener más detalles, consulte la sección sobre archivos de mapa de bits a continuación. El número aproximado de bytes de un mapa de bits de N bits y 2n colores se puede calcular utilizando la siguiente fórmula: el tamaño del archivo BMP es aproximadamente igual a 54+4*2 elevado a N + (w*h*n) /8.

, donde el alto y el ancho están en píxeles. Cabe señalar 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. Además, es importante tener en cuenta que se trata de una aproximación. Para una imagen de mapa de bits de n bits, aunque puede haber hasta 2n colores, es posible que una imagen en particular no los utilice todos. Dado que la paleta solo define los colores utilizados en la imagen, la paleta real será más pequeña que . Si desea saber cómo se obtienen estos valores, consulte la sección de formato de archivo a continuación. Debido a factores determinados por el propio algoritmo de almacenamiento, habrá algunas ligeras diferencias entre el tamaño calculado y el tamaño real del archivo dependiendo de los parámetros de la imagen.