| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
elgatop Invitado
|
Publicado: Sab 25 Ene, 2003 12:37 am Asunto: MArca de agua |
|
|
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 |
|
 |
elgatop Cdt

Registrado: 26 Ene 2003Mensajes: 14
|
|
| Volver arriba |
|
 |
TOÑO Master

Registrado: 26 Ago 2002Mensajes: 223Ubicación: Madrid - España -
|
Publicado: Lun 27 Ene, 2003 7:07 pm Asunto: |
|
|
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 |
|
 |
jhonalba Ens


Registrado: 24 Ago 2002Mensajes: 40Ubicación: Colombia
|
|
| Volver arriba |
|
 |
elgatop Cdt

Registrado: 26 Ene 2003Mensajes: 14
|
Publicado: Lun 27 Ene, 2003 9:27 pm Asunto: |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Lun 27 Ene, 2003 11:24 pm Asunto: |
|
|
| 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 |
|
 |
elgatop Cdt

Registrado: 26 Ene 2003Mensajes: 14
|
Publicado: Mar 28 Ene, 2003 6:06 am Asunto: |
|
|
| ahhhhhh si claro es que era hasta bb->height-1 y sin el -1 entonces es < si me habia equivocado.......... que pena. |
|
| Volver arriba |
|
 |
TOÑO Master

Registrado: 26 Ago 2002Mensajes: 223Ubicación: Madrid - España -
|
Publicado: Mar 28 Ene, 2003 5:24 pm Asunto: |
|
|
HOLA:
Ahhgg, Solo me he dedicado a traducir el codigo delphi, a mi ni me funciona.
By. |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mar 28 Ene, 2003 9:54 pm Asunto: |
|
|
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 |
|
 |
TOÑO Master

Registrado: 26 Ago 2002Mensajes: 223Ubicación: Madrid - España -
|
Publicado: Mie 29 Ene, 2003 9:44 am Asunto: |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Vie 31 Ene, 2003 8:07 am Asunto: |
|
|
| 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 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++ ... 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 |
|
 |
TOÑO Master

Registrado: 26 Ago 2002Mensajes: 223Ubicación: Madrid - España -
|
Publicado: Vie 31 Ene, 2003 2:56 pm Asunto: |
|
|
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 |
|
 |
|