manipulacion de imagenes

olbapnai
27 de Octubre del 2003
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

Juan
27 de Octubre del 2003
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)

Baltasar
27 de Octubre del 2003
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

Baltasar
27 de Octubre del 2003
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.