FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Pasar un JPEG en color a sepia
Hola a todos! Tengo la siguiente consulta, hay alguna forma de pasar una imagen JPEG, que esta en color, a sepia (sepia es una gama de colores marrones y amarillos). Muchas gracias.
__________________
Tome Pin y haga Pum! Última edición por pampitasnowman fecha: 12-02-2005 a las 15:27:00. |
#2
|
||||
|
||||
Cita:
Por ejemplo, la escala de Grises se obtiene asignando el mismo valor a los tres colores principales(R,G,B); Variando esos valores (pero siempre iguales en los tres) se obtienen los Grises. ¿Hay algo parecido para la escala de Sepia? ¿debe haber una especificación?
__________________
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
|
|||
|
|||
Hola,
Como dice el amigo Neftali la solución a tu problema puede ser similar a pasar una imágen a grices o a dos colores. Un ejemplo de como hacerlo está en: http://www.swissdelphicenter.ch/en/showcode.php?id=437 Saludos!
__________________
Suerte .: Gydba :. |
#4
|
|||
|
|||
Encontré el siguiente código en la página que me mandaste Gydba:
Código:
//This function adds a sepia effect to a bitmap. //the 'depth' sets the colour intensity of the red-brown colour //greater numbers set a higher intensity. //To create a greyscale effect instead, set 'depth' to 0 function bmptosepia(const bmp: TBitmap; depth: Integer): Boolean; var color,color2:longint; r,g,b,rr,gg:byte; h,w:integer; begin for h := 0 to bmp.height do begin for w := 0 to bmp.width do begin //first convert the bitmap to greyscale color:=colortorgb(bmp.Canvas.pixels[w,h]); r:=getrvalue(color); g:=getgvalue(color); b:=getbvalue(color); color2:=(r+g+b) div 3; bmp.canvas.Pixels[w,h]:=RGB(color2,color2,color2); //then convert it to sepia color:=colortorgb(bmp.Canvas.pixels[w,h]); r:=getrvalue(color); g:=getgvalue(color); b:=getbvalue(color); rr:=r+(depth*2); gg:=g+depth; if rr <= ((depth*2)-1) then rr:=255; if gg <= (depth-1) then gg:=255; bmp.canvas.Pixels[w,h]:=RGB(rr,gg,b); end; end; end; //Example: procedure TForm1.Button1Click(Sender: TObject); begin bmptosepia(image1.picture.bitmap, 20); end; Y tampoco entiendo porque es una función que retorna un buleano y sin el codigo "return". Bueno, espero que alguno se de cuenta donde está el error o que hago mal. Muchas gracias.
__________________
Tome Pin y haga Pum! |
#5
|
||||
|
||||
Cita:
Con respecto a esta cuestión sólo quisiera añadir algo, es posible crear una escala de tonos sepia a nuestra conveniencia, es decir asi como hay una escala de 256 tonos de gris podemos crear una escala de 256 tonos en sepia, rojo, amarillo, azul, etc. Aqui pongo un ejemplo de una escala de 256 tonos en sepia, en realidad solamente tomé un gradiente que comienza con café oscuro y que pasa por amarillos hasta llegar a blanco.
Ahora la cuestión sola es tomar un vector de componentes de color (R,G,B) y aplicar una transformación que convierta a escala de 256 grises como las que han recomendado en este hilo. Voy a tomar el producto punto como ejemplo: GRIS=(R,G,B).(0.30,0.59,0.11)=R*0.30+G*0.59+B*0.11 Esto nos dará un valor entre [0..255] correspondiente a un color en la escala de 256 tonos de gris. Ahora sólo buscamos el equivalente en la escala de 256 tonos sepia que construimos. NuevoColor=TonosSepia[GRIS] Un ejemplo de como aplicarlo sería
Es tan sólo un ejemplo, la escala de tonos la he creado arbitrariamente y cada quien puede definir su propia escala de acuerdo a su preferencia. Un saludo y seguimos en contacto |
#6
|
||||
|
||||
Cita:
Antes de que lo preguntes... Convert JPEG to BMP
__________________
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. |
#7
|
|||
|
|||
Por fin! Muchas gracias a todos por responder mis inquietudes. Probé las dos funciones que estaban en cuestión y funcionaron las dos perfectamente. Nuevamente, gracias a todos por responderme este post. Saludos, Nacho.
PD: Había que pasar nomás el JPG a BITMAP.
__________________
Tome Pin y haga Pum! |
#8
|
||||
|
||||
Hola Nacho!
Recibí tu correo en donde me pides que te explique como puedes modificar la escala de tonos sepia que puse como ejemplo en el código. Voy a publicar el código que utilicé para crearla, por si le interesa a alguien más. Con esta función puedes llenar un arreglo con un gradiente de colores.
Con esta función lo puedes enviar a un archivo de texto para después incluirla en el código.
Un ejemplo de como puedes llamar la función.
Con este ejemplo creas una escala de tonos que comienza en NEGRO, pasando por ROJO y que termina en BLANCO. Puedes experimentar con otros colores para obtener mejores efectos. Un saludo. |
#9
|
|||
|
|||
Nuevamente muchas gracias!
__________________
Tome Pin y haga Pum! |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|