Cómo convertir imágenes en color en imágenes en blanco y negro usando programación vb
(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