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
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 09:07:04.


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