Aug 26
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;
}
Referencias:
- WriteableBitmap
- Image
- Procesamiento de imágenes para Dummies :$ con C# y GDI+ (por algo se empieza ^^”)
- http://adamkinney.com/ (un par de tips de esta buena página y también del autor vía Twitter)
Espero haya sido de utilidad
Post.End();
September 3rd, 2009 at 9:09 pm
: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
October 24th, 2009 at 5:37 pm
una pregunta respecto a este ejemplo si ya tengo la nueva imagen puedo guardarla en lguna carpeta dentro de un servidor
October 30th, 2009 at 10:45 pm
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!