Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

MArca de agua

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: MArca de agua Responder citando

como modifico el brillo y el contraste de una imagen

en word cuando se coloca en el formato de imagen
marca de agua este le cambia el brillo y el contraste
Volver arriba
Mensaje    Asunto: Responder citando

aquien le interese consegui este codigo para lo de la marca de agua esta en tips and tricks.... Very Happy Arrow

https://cppbuilder.es/viewtopic.php?p=11461#11461
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

HOLA:


Traducido.

byte IntToByte(int i)
{

if (i>255) return 255;
if (i<0) return 0;
return i;
}

void Lightness( Graphics::TBitmap *BB, int Amount)
{


Byte *ptr;

int r,g,b,x,y;

for ( int y =0 ; y < BB -> Height-1 ; y ++)//esto no estoy muy seguro
// si no es un while (...)
{
ptr = (Byte *) BB -> ScanLine[y];
for ( int x =0 ; x < BB -> Width-1 ; x ++)
{

r = ptr[x*3];
g = ptr[x*3+1];
b = ptr[x*3+2];
ptr[x*3] = IntToByte(r+((255-r)*Amount) / 255);
ptr[x*3+1] = IntToByte(g+((255-g)*Amount)/ 255);
ptr[x*3+2] = IntToByte(b+((255-b)*Amount)/ 255);
}
}
}


void Contrast(Graphics::TBitmap *BB, int Amount)
{
Byte *ptr;
int rg,gg,bg,r,g,b,x,y;

for (int y =0; y < BB -> Height-1 ;y ++)
{

ptr = (Byte *) BB -> ScanLine[y];
for (int x =0 ; x < BB ->Width-1 ; x++)
{
r=ptr[x*3];
g=ptr[x*3+1];
b=ptr[x*3+2];
rg=(abs(127-r)*Amount)/ 255;
gg=(abs(127-g)*Amount)/ 255;
bg=(abs(127-b)*Amount)/ 255;
if (r>127)
r =r+rg;
else
r=r-rg;
if (g>127)
g =g+gg;
else
g=g-gg;
if (b>127)
b=b+bg;
else
b=b-bg;

ptr[x*3] =IntToByte(r);
ptr[x*3+1]=IntToByte(g);
ptr[x*3+2]=IntToByte(b);
}
}

}


void __fastcall TForm2::Button1Click(TObject *Sender)
{
Graphics::TBitmap *BB = new Graphics::TBitmap();
int Amount = 80;

BB->PixelFormat = pf24bit;
BB->Assign (Image1 ->Picture ->Bitmap);

Lightness (BB,Amount);
Amount = 10;//para el contraste
Contrast (BB,Amount);
Image1 ->Picture ->Bitmap ->Assign (BB);
BB->Free();

}
//---------------------------------------------------------------------------


By.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Hola .... Responder citando

Hola elgatop, aqui tienes un ejemplo listo para compilar de como modificar el brillo y el contraste de una imagen usando paletas....

http://homepages.borland.com/efg2lab/ImageProcessing/ImageEnhancementUsingPalettes.htm

ahhh, este si esta en C++ Builder...


Espero que te sirva.

Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

gracias jhonalba... por la dir..... ya lo baje para verlo.. aunque ya pase el codigo a c++......la pasaste un poco tarde......he he he
ahh TOÑO si es un for pero va hasta y<=bb->Height

y el otro hasta x<=bb->width
...................
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Cita:
ahh TOÑO si es un for pero va hasta y<=bb->Height

No va hasta y <= bb->Height sino hasta y < bb->Height y lo mismo con la coordenada X evidemente.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

ahhhhhh si claro es que era hasta bb->height-1 y sin el -1 entonces es < si me habia equivocado.......... que pena.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

HOLA:

Ahhgg, Solo me he dedicado a traducir el codigo delphi, a mi ni me funciona.

By.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola Toño:

Prueba cambiando las líneas siguientes que están en el OnClick del botón:

    BB->PixelFormat = pf24bit;
    BB->Assign(Image1->Picture->Bitmap);

Poniéndolas al revés. O sea:

    BB->Assign(Image1->Picture->Bitmap);
    BB->PixelFormat = pf24bit;

Si no se hace así y cargas una imagen que no sea de 24 bits al modificarle el brillo/contraste los colores se verán incorrectamente.

Saludos:
_Leo

PD: Por cierto en alguna parte de la web de Borland y en algún libro no se recomienda liberar los objetos usando su método Free(), eso es herencia de Delphi y en C++ lo propio es liberarlos con delete.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

HOLA _LEO:

Bueno, funciona con imagenes bmp, pero no con gifs, que son la mayoria de las imagens que utilizo, creo, de todas formas, no me convence scanline, tarda demasiado.

Y otra vez con free y delete, no, tantos articulos he leido apoyando uno como el otro, sin ir mas lejos marteens apoya el free, la verdaz lo utilizo aleatoriamente, nunca se sabe.

Por cierto, tengo un tema con un texto fantasma que si que me interesa, estoy mirando lo de crear el font, pero tampoco, puedes ayudarme con este tema.

By.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Cita:
Y otra vez con free y delete, no, tantos articulos he leido apoyando uno como el otro, sin ir mas lejos marteens apoya el free, la verdaz lo utilizo aleatoriamente, nunca se sabe.

Bueno, que Marteens que es "delphiano" lo defienda pues me parece normal Wink Pero bueno, dejando de lado artículos, en la propia ayuda dice lo siguiente:
"Do not call the Free method of an object. Instead, use the delete keyword, which invokes Free to destroy an object..."

No trato de convencerte, solo que yo no he pasado por Delphi y se me hace mas difícil a la vista algunas cosas así en C++ Wink ... OnCreate/OnDestroy por Constructor/Destructor... etc.


Cita:
Por cierto, tengo un tema con un texto fantasma que si que me interesa, estoy mirando lo de crear el font, pero tampoco, puedes ayudarme con este tema.

https://cppbuilder.es/viewtopic.php?t=4827
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

HOLA _LEO:

Como siempre mil gracias.
Lo del texto, tiene muy buena pinta, lo probararia ahora mismo, pero tengo que irme a Valladolid, y no estare en varios dias.

De nuevo gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.