Red de conocimiento informático - Aprendizaje de código fuente - Preguntas en el cuadro de lenguaje simple

Preguntas en el cuadro de lenguaje simple

Obtenga una imagen parcial de la imagen a través del tamaño del marco de la imagen. El siguiente código es fácil de obtener como código fuente de un determinado maestro en el foro, es solo como referencia.

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