manipulacion de imagenes
Queria saber como transformar una imagen jpg, gif o bmp de 16bits a escala de grises en 256 colores en vb5 o 6.
Muchas gracias
Muchas gracias
Para convertir un color a su equivalente gris hay que seguir
los siguientes pasos:
-Obtener el valor de sus componentes RGB
-Calcular el valor medio de esos componentes
-Utilizar ese valor medio, como valor para los componentes
RGB del color gris.
Te pondré un ejemplo, pero no lo he probado, asà que
puede estar mal:
R = color mod 256
color = color 256
G = color mod 256
color = color 256
B = color mod 256
Media = (R + G + B) 3
gris = RGB(Media,Media,Media)
los siguientes pasos:
-Obtener el valor de sus componentes RGB
-Calcular el valor medio de esos componentes
-Utilizar ese valor medio, como valor para los componentes
RGB del color gris.
Te pondré un ejemplo, pero no lo he probado, asà que
puede estar mal:
R = color mod 256
color = color 256
G = color mod 256
color = color 256
B = color mod 256
Media = (R + G + B) 3
gris = RGB(Media,Media,Media)
He estado jugando con lo que has planteado, y de momento he conseguido convertir una imagen en grises, pero sólo en pantalla. Pon dos controles picture en un formulario, carga uno de ellos con una imagen y pulsa el botón command1. Lo de pasarlo a disco no lo he hecho aún, pero vete probando a ver si es es lo que quieres.
Private Sub Command1_Click()
Dim a As Long
Dim b As Long
For a = 1 To Picture1.Width
For b = 1 To Picture1.Height
Pongris a, b
Next b
Next a
End Sub
Private Sub Pongris(x, y)
Dim color
Dim Gris As Integer
Dim color1, color2, color3
color = Picture1.Point(x, y)
color1 = color And &HFF
color2 = ((color And &HFF00) / &H100) Mod &H100
color3 = (color And &HFF0000) / &H10000
Gris = (color1 + color2 + color3) / 3
Picture2.PSet (x, y), RGB(Gris, Gris, Gris)
End Sub
Saludos
Private Sub Command1_Click()
Dim a As Long
Dim b As Long
For a = 1 To Picture1.Width
For b = 1 To Picture1.Height
Pongris a, b
Next b
Next a
End Sub
Private Sub Pongris(x, y)
Dim color
Dim Gris As Integer
Dim color1, color2, color3
color = Picture1.Point(x, y)
color1 = color And &HFF
color2 = ((color And &HFF00) / &H100) Mod &H100
color3 = (color And &HFF0000) / &H10000
Gris = (color1 + color2 + color3) / 3
Picture2.PSet (x, y), RGB(Gris, Gris, Gris)
End Sub
Saludos
Como es habitual en mÃ, olvidé informar que tanto el formulario como los piture controls habÃa que ponerles la propiedad scalemode a pixels.
Y la fómula para extraer los tres colores que ha expuesto Juan la veo más sencilla de usar, pero no me di cuenta de que estaba ahà hasta que envié mi respuesta.
Y la fómula para extraer los tres colores que ha expuesto Juan la veo más sencilla de usar, pero no me di cuenta de que estaba ahà hasta que envié mi respuesta.