FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Cambiar color de imagen
Hola a tod@s como están?
Bueno, yo acà molestando de nuevo con mi ignorancia Mi problema es el siguiente: Quisiera saber como hago para cambiar mediante código el color de un PNG, o sea, como està hecho en la imagen descriptiva de abajo. Tengo entendido que para hacer algo asi se cambian el color "Base" solamente y de ahi se obtiene el grafico exactamente igual pero con otro color. Lo que estoy tratando de hacer es un Front End para un programa que hace temas de android y me gustaria ponerle un form con una especie de editor grafico que haga eso. Estuve mirando en el foro y en google y las funciones que encuentro hacen algo similar, pero me dejan con el mismo tono toda la imagen, o sea el azul es azul y no tiene esos detalles blancos, como de brillo. Alguien entiendo mas o menos de graficos y puede explicarme como hacerlo? Muchas gracias a tod@s por el interés de ante mano! Saludos!!! |
#2
|
||||
|
||||
La verdad es que no lo he probado, pero yo haría un test sencillo.
Recorre los pixels de la imagen (alto y ancho) y cambia los valores de color de cada pixel. Básicamente puedes variar los valores RGB o HLS. Revisa la unit GraphUtil, y verás que hay funciones como:
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
|||
|
|||
Cita:
Mirá, yo lo tengo así: if Sender Is TShape then Col := TShape(Sender).Brush.Color; // Si hago click en el TShape me cambia el color. ColorRGB := GetRValue(Col) + GetGValue(col) + GetBValue(Col); // Cargo la variable con el color del TShape. FOR j := 0 TO PNG.Height-1 DO BEGIN FOR i := 0 TO PNG.Width-1 DO BEGIN // ColorRGB := GetRValue(PNG.Canvas.Pixels[i,j]) + GetGValue(PNG.Canvas.Pixels[i,j]) + GetBValue(PNG.Canvas.Pixels[i,j]); IF PNG.Canvas.Pixels[i,j] <> ClBlack THEN ColorRGBToHLS(PNG.Canvas.Pixels[i,j],H,L,S); // Este lo seteo con variables WORD y con valores H = 120 - L = 20 - S = 50; END END; Pero al cargar la imagen no me hace nada (obvio que salvo antes de cargarla) Podrías darme "una linea" de como hacerlo por favor?? |
#4
|
||||
|
||||
Te adjunto una pequeña prueba que cambia los componentes de color de una imagen. Es muy simple. Captura cada uno de los pixels de una imagen y modifica en un porcentaje cada unos de los componentes (red, green, blue).
Puedes utilizar las funciones que te comenté para realizar otras transformaciones, de forma similar. Una vez que lo tengas se pueden realizar optimizaciones, por ejemplo usando ScanLine. El código de modificación sería algo así:
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como Cambiar El Color De Fondo En Una Imagen | kurono | Varios | 2 | 27-11-2011 13:53:41 |
Cambiar RGB de un color | delphiladero | Gráficos | 12 | 26-06-2010 06:30:18 |
Cambiar color de letras de acuerdo al color de fondo | Adrian Murua | OOP | 2 | 15-11-2008 18:36:21 |
Mantener color verde olivo de las ventanas, al cambiar el color en windows | mancurnino | Varios | 6 | 11-03-2008 15:39:47 |
Cambiar el color de una imagen | inter_mercadeo | Gráficos | 2 | 25-02-2005 18:36:54 |
|