Preguntas en el cuadro de lenguaje simple
El siguiente es el código nativo de la imagen.
Versión 2
. La imagen de subrutina _ Tome local, conjunto de bytes, ábrala y solo se puede comprimir con 0, ¡y es un mapa de bits de más de 8 bits!
Parámetro mapa de bits original, conjunto de bytes
El parámetro extrae el lado izquierdo de la imagen, tipo entero.
El parámetro elimina el borde superior de la imagen, tipo entero.
Ancho de extracción de parámetros, tipo entero
Alto de extracción de parámetros, tipo entero
. Ancho de imagen variable local, tipo entero.
. Altura de imagen variable local, tipo entero.
. Bits de imagen de variable local, tipo entero.
Compresión de imagen variable local, tipo entero
. Nuevo mapa de bits para variables locales, conjunto de bytes
. Nuevo encabezado de mapa de bits de variable local BITMAPINFOHEADER
. Variable local nuevo encabezado del archivo de mapa de bits, información del encabezado del archivo_
. Longitud del archivo variable local, tipo entero.
. Variable local I, tipo entero.
. Desplazamiento de celosía de color de variable local, tipo entero.
. El tamaño del punto de la variable local, entero
. Tabla de colores de variables locales, conjunto de bytes
Desplazamiento total de datos para variables locales enteras
Nuevo ancho de línea para variables locales enteras
Entero El ancho de línea original de la variable local variables
. Tiempo de variable local, tipo entero
Ancho de imagen = obtener datos del conjunto de bytes (obtener el conjunto de bytes del medio (mapa de bits original, 19, 4), #tipo entero,)
Alto de la imagen = obtener datos del conjunto de bytes (obtener el conjunto de bytes del medio (mapa de bits original, 23, 4), tipo #entero)
Bits de imagen = obtener datos del conjunto de bytes (obtener el conjunto de bytes del medio (mapa de bits original, 29, 2), #tipo de entero corto,)
Compresión de imagen = obtener datos del conjunto de bytes (obtener el conjunto de bytes del medio (mapa de bits original, 31, 4), #tipo de entero,)
. Si es verdadero (compresión de imagen ≠ 0)
Devuelve ({?})
Si es verdadero.
. Si es verdadero (bits de imagen = 32)
Desplazamiento de punto de color = 54
Tamaño de punto = 4
Si es verdadero, final.
. Si es verdadero (bits de imagen = 24)
Desplazamiento de punto de color = 54
Tamaño de punto = 3
Si es verdadero, final.
. Si es verdadero (bits de imagen = 16)
Desplazamiento de punto de color = 54
Tamaño de punto = 2
Si es verdadero, final.
. Si es verdadero (bits de imagen = 8)
Desplazamiento de la matriz de puntos de color = 1078
Número de puntos = 1
Tabla de colores = obtener conjunto de bytes Valor intermedio (original bitmap, 55, 1024)
Si realmente se acabó.
. Si es verdadero (profundidad de bits de la imagen < 8)
Texto de depuración de salida ("¡Error! ¡La profundidad de bits de la imagen es menor que 8!")
Devuelve ({?})
Si realmente se acabó.
. si es verdadero (imagen tomada en el lado izquierdo + ancho de la toma > ancho de la imagen o borde superior de la imagen tomada + altura de la toma > altura de la imagen o imagen tomada en el lado izquierdo < 0 o borde superior de la imagen tomada < 0 o ancho de la toma ≤ 0 o altura de la toma ≤ 0)
Texto de depuración de salida ("¡Error de parámetro! ¡Compruebe los parámetros de entrada!")
Devuelve ({?})
Si realmente terminó.
Ancho de línea original = desplazamiento a la izquierda (desplazamiento a la derecha (ancho de imagen × número de imagen + 31, 5), 2)
Ancho de línea nuevo = desplazamiento a la izquierda (desplazamiento a la derecha (quitar ancho ×bits de imagen + 31, 5), 2)
Longitud del archivo = ancho de nueva línea × altura de extracción
Nuevo mapa de bits = conjunto de bytes vacío (longitud del archivo + 54 + palabras Longitud del conjunto de secciones (tabla de colores))
Nuevo encabezado de archivo de mapa de bits.
Tipo de archivo=19778.
Nuevo encabezado de archivo de mapa de bits. Desplazamiento = Desplazamiento de la matriz de puntos de color.
Nuevo encabezado de archivo de mapa de bits. Tamaño del resultado = desplazamiento de la matriz de puntos de color + longitud del archivo
Copiar encabezado del archivo de mapa de bits Memory_copy al conjunto de bytes (nuevo mapa de bits [1], nuevo encabezado del archivo de mapa de bits, 14)
Nuevo título del mapa de bits. Bisize = 40
Nuevo título de mapa de bits. biwidth = extraer ancho
Nuevo título de mapa de bits. biheight =extraer altura
Nuevo título de mapa de bits. Biplano = 1
Nuevo título de mapa de bits. recuento de bibits = número de bits de imagen.
Copiar encabezado de mapa de bits Memory_copy al conjunto de bytes (nuevo mapa de bits[15], nuevo encabezado de mapa de bits, 40)
. if true(imagebits=8)
Copia el byte de memoria establecido en el conjunto de bytes (nuevo mapa de bits[55], mapa de colores[1], 1024)
si realmente terminó.
¿Desplazamiento total de datos = ancho de línea original × (alto de la imagen - alto extraído - borde superior de la imagen extraída) + lado izquierdo de la imagen extraída × tamaño en puntos? Desplazamiento total = desplazamiento de altura + desplazamiento de ancho
. Contar encabezado de bucle (recuperar altura, I)
Copiar memoria _ byte establecido en conjunto de bytes (nuevo mapa de bits [(I-1) × nuevo ancho de línea + desplazamiento de matriz de puntos de color + 1], imagen original [color desplazamiento de la matriz de puntos + desplazamiento total de datos + (I-1) × ancho de línea original + 1], nuevo ancho de línea).
HandleEvent()
. Conteo de cola del ciclo ()
Retorno (nuevo mapa de bits) La siguiente es la estructura del tipo de datos
Versión 2
. Tipo de datos BITMAPINFOHEADER
. Miembro biSize, tipo entero.
. Miembro de doble ancho, tipo entero
Alto de miembro, tipo entero
Miembro de doble plano, entero corto
. Miembro biBitCount, tipo entero corto.
Doble compresión de miembros, tipo entero
. Miembro biSizeImage, tipo entero
. Miembro biXPelsPerMeter, tipo entero
. Miembro biYPelsPerMeter, tipo entero
El miembro se usa en ambas direcciones, tipo entero
El miembro es doblemente importante, tipo entero
Versión 2
. Información del encabezado del archivo de tipo de datos_
. Tipo de archivo miembro, corto, bfType.
. Tamaño del resultado del miembro, tipo entero, bfSize
Miembro reservado 1, tipo entero corto, bfReserved1 reservado, debe establecerse en 0.
Miembro reservado 2, entero corto, bfReserved2, debe establecerse en 0.
El desplazamiento de bytes desde el comienzo del encabezado del archivo hasta los datos reales de la imagen es el siguiente: llame a la función API.
Versión 2
. Comando DLL copiar memoria _ copiar el encabezado del archivo de mapa de bits al conjunto de bytes, " RtlMoveMemory "
. Parámetro Destino, tipo de byte, dirección
. Parámetro Src, información del encabezado del archivo_
. Parámetro len, tipo entero
. Comando DLL copiar memoria _ copiar encabezado de mapa de bits al conjunto de bytes, " RtlMoveMemory "
. Parámetro Destino, tipo de byte, dirección
. Parámetro Src, BITMAPINFOHEADER
. El parámetro len es de tipo entero
. El comando DLL copia el conjunto de bytes de memoria en el conjunto de bytes,,," RtlMoveMemory"
. Parámetro Dest, tipo de byte, dirección
Parámetro Src, tipo de byte, dirección
. Parámetro len, tipo entero