Pregunta

¿Hay alguna forma sencilla de colorear programáticamente las imágenes en .NET? Básicamente tenemos una imagen en blanco y negro y necesitamos poner una capa de color rosa por encima de ella y reducir la opacidad de esa capa para hacer que la imagen se coloree en rosa.

¿Fue útil?

Solución

Deberías usar la maravillosa ImageMagick . Tiene enlaces .NET, así que no hay problema.

¡Diviértete! :)

Otros consejos

La forma en que me viene a la mente es usar los paquetes de dibujo para dibujar un rectángulo sobre la imagen en un color determinado (puedes configurar alfa). No es muy eficiente, pero con el almacenamiento en caché, no haría ningún daño, incluso en un servidor ocupado.

Esto es un poco demasiado personalizado para un método de marco .net. Si no puede encontrar una solución de llamada a un solo método ... publico algo que podría ser algo para mirar.

Si tiene un WPF, puede cargar la imagen en un control. Tenga otro control (Rectángulo con relleno rosa y Transparencia) encima. (Use algo como una cuadrícula para el diseño para que ambos se superpongan perfectamente) A continuación podrías

RenderTargetBitmap bmp = new RenderTargetBitmap( imageWidth,imageHeight, 
  DPIHoriz, DPIVert, 
  PixelFormats.Pbrga32);
 // if you don't want to make the controls 'visible' on screen, you need to trigger size calculations explicitly. 
grid.Measure(new Size(imageWidth, imageHeight));
grid.Arrange(new Rect(0,0, imageWidth, imageHeight);
bmp.Render(grid);

Así que obtienes lo que ves en la pantalla, escrito en el mapa de bits en la memoria. Entonces podrías guardarlo. Si eso no funciona, puede optar por el control de nivel de píxeles con la clase WriteableBitmap y realizar el trabajo de bytes.

Creo que será un poco más complicado si quieres colorear una imagen en lugar de solo poner una capa semi transparente en la parte superior. Si desea tener el mismo efecto que la pantalla " " " en el modo de capa en PhotoShop, entonces debe reemplazar todos los tonos negros de la imagen con tonos del nuevo color para mantener las partes blancas en blanco.

Definitivamente se puede hacer en .NET, pero supongo que no estaría de más buscar en una biblioteca de algún tipo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top