Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-05-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
quitar el color naranja en una imagen

hola amigos como puedo modificar este codigo que me quita el color rojo en una imagem para que me quite el color naranja

Código Delphi [-]
uses jpeg;

procedure TForm1.Button1Click(Sender: TObject);
var
 jpg: TJPEGImage;
 bmp: TBitmap;
 Count: Cardinal;
 lpBuffer: PByte;
begin
 jpg := TJPEGImage.Create;
 jpg.LoadFromFile('c:\windows\web\wallpaper\autumn.jpg');
 bmp := TBitmap.Create;
 bmp.Assign(jpg);
 bmp.PixelFormat := pf24bit;
 Count := bmp.Width * bmp.Height;
 lpBuffer := PByte(Cardinal(bmp.ScanLine[bmp.Height - 1]) + 2);
 while LongBool(Count) do // Barrido
  begin
   if lpBuffer^ > 64 then //  Si el tono excede el mínimo
    Dec(lpBuffer^, 64);   // reducimos dicho valor.
//    lpBuffer^ := 255{Ej. enrojecido total};
   Inc(lpBuffer, 3);
   Dec(Count);
  end;
 Image2.Picture.Assign(bmp);
 Image1.Picture.Assign(jpg);
 bmp.Destroy;
 jpg.Destroy;
end;
end.
Responder Con Cita
  #2  
Antiguo 09-05-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 jpg: TJPEGImage;
 bmp: TBitmap;
 Count: Cardinal;
 lpBuffer: PChar;
begin
 jpg := TJPEGImage.Create;
 jpg.LoadFromFile('c:\windows\web\wallpaper\autorun.jpg');
 bmp := TBitmap.Create;
 bmp.Assign(jpg);
 bmp.PixelFormat := pf24bit;
 Count := bmp.Width * bmp.Height;
 lpBuffer := PChar(Cardinal(bmp.ScanLine[bmp.Height - 1]) + 1);
 while LongBool(Count) do
  begin
   if (lpBuffer^ > #32) and (lpBuffer[1] > #32) then
    begin
     Dec(lpBuffer[1], 32);
     Dec(lpBuffer^, 32);
    end;
   Inc(lpBuffer, 3);
   Dec(Count);
  end;
 Image2.Picture.Assign(bmp);
 Image1.Picture.Assign(jpg);
 bmp.Destroy;
 jpg.Destroy;
end;

Edito; había dejado una ruta muy particular como nombre de archivo, y no se aplicaba al caso.

Última edición por cHackAll fecha: 09-05-2008 a las 16:54:48.
Responder Con Cita
  #3  
Antiguo 09-05-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola kurono,
Al final del código llamas a Destroy. No es aconsejable llamar a Destroy explícitamente, lo correcto es emplear Free para liberar el objeto. O en su defecto, FreeAndNil.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #4  
Antiguo 09-05-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
Hola kurono,
Al final del código llamas a Destroy. No es aconsejable llamar a Destroy explícitamente, lo correcto es emplear Free para liberar el objeto. O en su defecto, FreeAndNil.

Saludos,
Mea culpa lo que dice Delphius es cierto, sin embargo el método Free no es virtual, lo que significa que dificilmente sea sobreescrito por una clase heredada de TObject, con un codigo tan simplon como;

Código Delphi [-]
procedure TObject.Free;
begin
  if Self <> nil then
    Destroy;
end;

Me he mal acostumbrado a saltarme ese paso (para mi) innecesario; he ir directo a destruir el objeto

Saludos
Responder Con Cita
  #5  
Antiguo 09-05-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
amigo hackll con esa modificacion del codigo el color anaranjado no llega a quitarse ni disminuye tampoco lo que hace es distorcionar la imgen lo que quiero no es quitar del todo el color naranja de la imagen sino disminuirla lo mas posible o poner la imagen en blanco y negro y ir subiendo el color poco a poco en cuanto al amigo delpius aplique lo que me dices sobre el codigo free
Responder Con Cita
  #6  
Antiguo 12-05-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por kurono Ver Mensaje
amigo hackll con esa modificacion del codigo el color anaranjado no llega a quitarse ni disminuye tampoco lo que hace es distorcionar la imgen lo que quiero no es quitar del todo el color naranja de la imagen sino disminuirla lo mas posible o poner la imagen en blanco y negro y ir subiendo el color poco a poco en cuanto al amigo delpius aplique lo que me dices sobre el codigo free
Amigo kurono, procura utilizar el Clipboard para copiar mi nick; no te gustaría que a ti te dijeran "korona" verdad?, (lo digo tambien por el nick de Delphius). Tampoco comprendo lo que quisiste decir al final; te ruego tomar unos segundos más para redactar tus ideas.


Ahora distorcionar? no... hace lo que dijiste; talvez haya un error mínimo;

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 jpg: TJPEGImage;
 bmp: TBitmap;
 Count: Cardinal;
 lpBuffer: PChar;
begin
 jpg := TJPEGImage.Create;
 jpg.LoadFromFile('c:\windows\web\wallpaper\Autumn.jpg');
 bmp := TBitmap.Create;
 bmp.Assign(jpg);
 bmp.PixelFormat := pf24bit;
 Count := bmp.Width * bmp.Height;
 lpBuffer := PChar(Cardinal(bmp.ScanLine[bmp.Height - 1]) + 1);
 while LongBool(Count) do
  begin
   if (lpBuffer^ > #32) and (lpBuffer[1] > #64) then
    begin
     Dec(lpBuffer[1], 64);
     Dec(lpBuffer^, 32);
    end;
   Inc(lpBuffer, 3);
   Dec(Count);
  end;
 Image2.Picture.Assign(bmp);
 Image1.Picture.Assign(jpg);
 bmp.Destroy;
 jpg.Destroy;
end;

El color naranja es una composición de matizes 100% de rojo y 50% de verde, con lo que un naranja puro es $0080FF (255 de rojo, 128 de verde y 0 de azul). Talvez con lo que tengas que trabajar es justamente eso; detectar el valor de dichas matices.

Saludos
Responder Con Cita
  #7  
Antiguo 12-05-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
ok entonces lo que hare es bajar el color rojo y verde luego le cuento como me resulto
Responder Con Cita
  #8  
Antiguo 13-05-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola kurono,
¿Me podrías explicar mejor que es lo que deseas?
No termino de comprenderte... ¿Deseas quitar todo tono naranja? Si es así... ¿que color debe asumir? ¿el blanco?

La verdad es que me mareó lo que dijiste sobre que esté en blanco y negro y luego darle color...

¿Al final? ¿De que se trata? ¿Dar color a la imagen o quitarlo?

Para quitarlo es como dice Javier (cHackAll), azul debe ser 0, rojo estar al máximo y el verde a la mitad.

Entonces tu comprobación debería ser:
if (Azul = 0) AND (Rojo = 255) AND (Verde <= 128)
then CambiarColor;

Pero el problema está en saber donde termina el tono rojo y comienza el naranja. El rojo puro es (255,0,0) el naranja puro es (255,128,0) y el medio hay muchos tonos, la mitad son más anaranjados y la otra mitad son rojizos. Por ejemplo el valor (255,64,0) No es ni naraja ni rojo.
El asunto es ¿Cuando consideras que es tono naranja?

Y mira... prueba con este color (255,192,0) Se ve que tiene tendencia al amarillo... prueba con este: (255,160,0) ¿Que es? Tiene de naranja y tiene de amarillo. El (255,144,0) También tiene de naranja... pero tiene de amarillo... ¿El (255,136,0) te sigue pareciendo con un tono naranja?

¿Entiendes más o menos a lo que voy?
Tonos naranjas hay muchos. El naranja está entre el rojo y el amarillo. Pero hay valores que nos pueden confundir...

No se quienes emplearán tu sistema, ni para que es esta funcionalidad. Si debo advertirte que la sencación de tonalidad que percibimos no es fija, y cada persona percibe más o menos ciertas tonalidades... ni que decir si la persona sufre daltonismo. ¡Justo el color que trae problemas! Hace un tiempo en la taberna se hablo un poquito del tema y allí una de nuestras compañeras expuso este enlace.

Me gustaría que me explicaras cual es el objetivo de eliminar justo este problemático color.

No se si todo lo que te he dicho te sea de utilidad. Pero es que justo este tema no es tan sencillo como parece. Me pareció oportuno acerte tomar conocimiento de esto.

Saludos a todos colores, diría nuestro amigo Al.
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #9  
Antiguo 13-05-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
gracias amigo delphius y chackall pues pude disminuir el color naranja con los ejemplo que me dieron ustedes y estan muy buenos tanto lo de chackall como los de delphius pues lo estoy implementando en el programa que estoy haciendo pues como dice delphius hay que saber el valor exacto de donde comiensa cada color de parto yo convinando valores hasta llegar al que deseo muchas gracias nuevamente a los dos
Responder Con Cita
  #10  
Antiguo 13-05-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por kurono Ver Mensaje
gracias amigo delphius y chackall pues pude disminuir el color naranja con los ejemplo que me dieron ustedes y estan muy buenos tanto lo de chackall como los de delphius pues lo estoy implementando en el programa que estoy haciendo pues como dice delphius hay que saber el valor exacto de donde comiensa cada color de parto yo convinando valores hasta llegar al que deseo muchas gracias nuevamente a los dos
Me alegro que hayas captado la idea.
Sino es mucha molestia, ¿podrías para la proxima usar mejor los signos de puntuación?
No es que sea muy quisquilloso... es que escribir todo seguido dificulta un poco más la lectura.
No te estoy retando, sólo es una pequeña observación. No te pido que escribas a lo Neruda.

Muchas gracias,
Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #11  
Antiguo 13-05-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
ok no hay problema
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como quitar el color rojo de una imagen kurono Varios 6 28-04-2008 18:44:06
pintar de diferente color a una imagen Chai Gráficos 8 30-10-2006 10:55:15
Cambiar el color de una imagen inter_mercadeo Gráficos 2 25-02-2005 18:36:54
Botón con Imagen y color. kukinn Varios 10 13-01-2005 14:32:30
¿Como quitar una imagen que esta encima de otra? astur_racing Gráficos 3 01-09-2004 20:47:15


La franja horaria es GMT +2. Ahora son las 15:23:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi