Red de conocimiento informático - Material del sitio web - Cómo convertir imágenes en color en imágenes en blanco y negro usando programación vb

Cómo convertir imágenes en color en imágenes en blanco y negro usando programación vb

Lo usé ayer y funciona bien y es rápido.

(El código está en el séptimo piso de la dirección a continuación)

Un ejemplo de uso de API, n veces más rápido que GetPixel.

Opción explícita

Un ejemplo de procesamiento de imágenes

Jadeluo, 21/02/2004

Correo electrónico: Jadeluo@sina.com

Mapa de bits de tipo privado

bmType es Largo

El ancho y el largo de BM son iguales

La altura de BM tiene la misma longitud

bmWidthBytes tiene la misma longitud

bmPlanes que un número entero

bmBitsPixel es un número entero

bmBits tiene la misma longitud

End tipo

Función declarada de forma privada GetObject Lib "gdi32 "alias" GetObjectA "(el objeto ByVal ho es Long, ByVal nCount es Long, lpObject es Any) es Long

Función declarada de forma privada GetBitmapBits Lib " GDI 32 "( ByVal hBitmap es Long, ByVal dwCount es Long, lpBits es Any) es Long

Función de declaración privada SetBitmapBits Lib "GDI 32 "(ByVal hBitmap es Long, ByVal dwCount es Long, lpBits es Cualquiera) es Largo

Privado subform_Load()

picShow. BorderStyle = vbBSNone

picShow. Mover 0,0

Finalizar conector

Private Sub cmdLoad_Click()

Continuar con el siguiente paso en caso de error

Usar CommonDialog1

. Filtro = "Imágenes (*.BMP*.JPG; *.GIF*.ICO)|*.BMP*.JPG; *.GIF*.ICO | Todos los archivos (*.*)|*.*"

. CancelError = Verdadero

. MostrarAbrir

si hay error. Entonces número = 0

picShow. AutoSize = Verdadero

picShow. Imagen = LoadPicture(.Filename)

Termina si...

Termina con...

Vaya a 0 en caso de error

Conector final

Private Sub cmdGray_Click()

Dim PicBits() es Byte, PicInfo es BITMAP, BytesPerPixel es Long

Dim R es byte, G es palabra Sección, B es byte, gris es byte, I es Long

Utilice picShow

. AutoRedraw = Verdadero

GetObject. Imagen, lente (información de la imagen), información de la imagen

bytes por píxel = bmbitspixel \ 8

ReDim PicBits (1 a picinfo. Ancho de BM * picinfo. Alto de BM * bytes por píxel)

GetBitmapBits.

Imagen, UBound(PicBits), PicBits(1)

Para i = 0 a UBound(PicBits)\ bytes por píxel-1

B = PicBits(i * número de bytes en píxeles 1)

G = PicBits(i * BytesPerPixel 2)

R = PicBits(i * BytesPerPixel 3)

Gris = R * 0,39 G * 0,5 B * 0.11

La siguiente oración convierte valores en escala de grises en valores binarios.

Si gris gt127 entonces gris = 255 de lo contrario gris = 0

PicBits(i *bytes número de píxeles 1) = gris

PicBits(i *bytes número de píxeles 2) = gris

PicBits(i * número de bytes píxeles 3) = gris

Siguiente I

SetBitmapBits. Imagen,UBound(PicBits),PicBits(1)

. Actualizar

Finalizar con…

Finalizar unión