Manipulación de imágenes en Silverlight 3

CSharp, Development, Silverlight Add comments

Gracias a WriteableBitmap podemos realizar la manipulación de imágenes en Silverlight 3. En este ejemplo, realizaremos la conversión de la imagen fuente de un control Image a su par en escarla de grises. Aplicaremos una fórmula de conversión a nivel de bytes del pixel (obtenido inicialmente como entero).

void MakeGray(Image img)
{
    WriteableBitmap bitmap = new WriteableBitmap(img,null);
    for (int y = 0; y < bitmap.PixelHeight; y++)
    {
        for (int x = 0; x < bitmap.PixelWidth; x++)
        {
            //obtiene pixel a pixel
            int pixelLocation = bitmap.PixelWidth * y + x;
            int pixel = bitmap.Pixels[pixelLocation];

            byte[] pixelBytes = BitConverter.GetBytes(pixel);
            byte bwPixel = (byte)(.299 * pixelBytes[2]
                                  + .587 * pixelBytes[1]
                                  + .114 * pixelBytes[0]);
            pixelBytes[0] = bwPixel;//b
            pixelBytes[1] = bwPixel;//g
            pixelBytes[2] = bwPixel;//r
            //la posición 3 es el alpha
            bitmap.Pixels[pixelLocation] = BitConverter.ToInt32(pixelBytes,0);
        }
    }
    img.Source = bitmap;
}

image

image

Referencias:

Espero haya sido de utilidad :)

Post.End();

3 Responses to “Manipulación de imágenes en Silverlight 3”

  1. Fredy.Rojas Says:

    :S assu tanto código para cambiar color :S prefiero photoshop.. no mentira jajja, muy interesante conocer como funciona la herramienta ‘escala de grises’ por dentro, así se pueden hacer modificaciones que las herramientas no permiten

  2. carina Says:

    una pregunta respecto a este ejemplo si ya tengo la nueva imagen puedo guardarla en lguna carpeta dentro de un servidor

  3. Jara Gabriel Says:

    Hola, ese es un tema que he estado revisando, como sabrás Silverlight no tiene ciertos permisos para realizar ese tipo de proceso. Sin embargo he revisado (hace un mes) un pequeño truco que por motivos de tiempo =/, no he podido publicar. Espero entre esta y la otra semana compartirlo.
    Gracias por tu visita :D. Pronto más novedades!

Leave a Reply

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in