Escribir en Imagen (Part II)

12/01/2007 - 22:06 por Pintamono | Informe spam
Logré colocar texto en una imagen gracias a un articulo que encontre acá:
http://www.bobpowell.net/modifyImage.htm

El problema que tengo ahora es que si bien la pagina da los resultados
esperados hay algo que no me gusta y es que la imagen la graba en el disco..

Esto es lo que estoy haciendo:


protected System.Web.UI.WebControls.Image CuadroImagen;

CuadroImagen.Visible=true;
System.Drawing.Image i =
System.Drawing.Image.FromFile("d:\\imagen\\untitled.jpg"); // imagen
original
Graphics g=Graphics.FromImage(i);

// desde acá comienzo a colocar el texto en la imagen a modificar

g.DrawString("531",new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(45,84,94,25));
g.DrawString("96300",new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(45,115,94,25));
g.DrawString(DateTime.Now.ToShortDateString(),new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(136,115,94,25));
g.DrawString(TotalMontoPago.ToString(),new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(365,210,94,25));
g.Dispose();

// hasta acá

string path =
"d:\\inetpub.alt\\webgp\\wwwgp\\imagen\\testimage"+DateTime.Now.Second.ToString()+".jpg";
// nueva imagan
//la imagen la grabo con los segundos de cuando fue creada para que no me
genere problemas si alguien mas esta haciendo lo mismo.

CuadroImagen.ImageUrl = path;
i.Save(path.ToString(),System.Drawing.Imaging.ImageFormat.Jpeg); // Grabo la
imagen.
i.Dispose();

La duda es: ¿Cómo puedo hacer para no grabar la imagen al disco y mostrarla
inmediatamente en el cuadro destinado para ello?, en mi caso CuadroImagen

Esta es la primera vez que trabajo con imagenes.

Gracias.

AIM: PintamonoChile
YIM: pintamono79 en yahoo punto es
IRC: Pinatmono-
Jabber: Pintamono@jabberes.org
Radio: http://pintamono.no-ip.org (OffLine)
Fotolog: http://www.fotolog.com/pintamono_/
Flickr: http://www.flickr.com/photos/pintamono/
Videos: http://www.youtube.com/user/pintamono

Preguntas similare

Leer las respuestas

#1 RFOG
12/01/2007 - 23:10 | Informe spam
Pues cuando quieras pintarla, llama al Invalidate del CuadroImagen,
sobreescribe el evento Paint, y allí la pintas. Si la pintas fuera del
Paint, cada vez que algo tape tu imagen, esta no se volverá a pintar. Y si
quieres que el .NET lo haga solo, asigna tu imagen a CuadroImagen, así:

CuadroImagen.Image=i;

La desventaja de este modo es que si ese cuadro es una composición o mezcla
dinámica, resulta bastante lento e ineficiente irla cambiando de esa forma.

Suponiendo que CuadroImage sea un PictureBox.

Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Nunca la persona llega a tal grado de perfección como cuando llena un
impreso de solicitud de trabajo.

"Pintamono" wrote in message
news:
Logré colocar texto en una imagen gracias a un articulo que encontre acá:
http://www.bobpowell.net/modifyImage.htm

El problema que tengo ahora es que si bien la pagina da los resultados
esperados hay algo que no me gusta y es que la imagen la graba en el
disco..

Esto es lo que estoy haciendo:


protected System.Web.UI.WebControls.Image CuadroImagen;

CuadroImagen.Visible=true;
System.Drawing.Image i =
System.Drawing.Image.FromFile("d:\\imagen\\untitled.jpg"); // imagen
original
Graphics g=Graphics.FromImage(i);

// desde acá comienzo a colocar el texto en la imagen a modificar

g.DrawString("531",new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(45,84,94,25));
g.DrawString("96300",new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(45,115,94,25));
g.DrawString(DateTime.Now.ToShortDateString(),new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(136,115,94,25));
g.DrawString(TotalMontoPago.ToString(),new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(365,210,94,25));
g.Dispose();

// hasta acá

string path =
"d:\\inetpub.alt\\webgp\\wwwgp\\imagen\\testimage"+DateTime.Now.Second.ToString()+".jpg";
// nueva imagan
//la imagen la grabo con los segundos de cuando fue creada para que no me
genere problemas si alguien mas esta haciendo lo mismo.

CuadroImagen.ImageUrl = path;
i.Save(path.ToString(),System.Drawing.Imaging.ImageFormat.Jpeg); // Grabo
la imagen.
i.Dispose();

La duda es: ¿Cómo puedo hacer para no grabar la imagen al disco y
mostrarla inmediatamente en el cuadro destinado para ello?, en mi caso
CuadroImagen

Esta es la primera vez que trabajo con imagenes.

Gracias.

AIM: PintamonoChile
YIM: pintamono79 en yahoo punto es
IRC: Pinatmono-
Jabber:
Radio: http://pintamono.no-ip.org (OffLine)
Fotolog: http://www.fotolog.com/pintamono_/
Flickr: http://www.flickr.com/photos/pintamono/
Videos: http://www.youtube.com/user/pintamono

Respuesta Responder a este mensaje
#2 Pintamono
15/01/2007 - 19:24 | Informe spam
Gracias, te cuento que el CuadroImagen no es un PictureBox sino que un
"System.Web.UI.WebControls.Image"
y no me funciona eso de "CuadroImagen.Image=i"


"RFOG" wrote in message
news:%
Pues cuando quieras pintarla, llama al Invalidate del CuadroImagen,
sobreescribe el evento Paint, y allí la pintas. Si la pintas fuera del
Paint, cada vez que algo tape tu imagen, esta no se volverá a pintar. Y si
quieres que el .NET lo haga solo, asigna tu imagen a CuadroImagen, así:

CuadroImagen.Image=i;

La desventaja de este modo es que si ese cuadro es una composición o
mezcla dinámica, resulta bastante lento e ineficiente irla cambiando de
esa forma.

Suponiendo que CuadroImage sea un PictureBox.

Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
> Nunca la persona llega a tal grado de perfección como cuando llena un
impreso de solicitud de trabajo.

"Pintamono" wrote in message
news:
Logré colocar texto en una imagen gracias a un articulo que encontre acá:
http://www.bobpowell.net/modifyImage.htm

El problema que tengo ahora es que si bien la pagina da los resultados
esperados hay algo que no me gusta y es que la imagen la graba en el
disco..

Esto es lo que estoy haciendo:


protected System.Web.UI.WebControls.Image CuadroImagen;

CuadroImagen.Visible=true;
System.Drawing.Image i =
System.Drawing.Image.FromFile("d:\\imagen\\untitled.jpg"); // imagen
original
Graphics g=Graphics.FromImage(i);

// desde acá comienzo a colocar el texto en la imagen a modificar

g.DrawString("531",new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(45,84,94,25));
g.DrawString("96300",new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(45,115,94,25));
g.DrawString(DateTime.Now.ToShortDateString(),new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(136,115,94,25));
g.DrawString(TotalMontoPago.ToString(),new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(365,210,94,25));
g.Dispose();

// hasta acá

string path =
"d:\\inetpub.alt\\webgp\\wwwgp\\imagen\\testimage"+DateTime.Now.Second.ToString()+".jpg";
// nueva imagan
//la imagen la grabo con los segundos de cuando fue creada para que no me
genere problemas si alguien mas esta haciendo lo mismo.

CuadroImagen.ImageUrl = path;
i.Save(path.ToString(),System.Drawing.Imaging.ImageFormat.Jpeg); // Grabo
la imagen.
i.Dispose();

La duda es: ¿Cómo puedo hacer para no grabar la imagen al disco y
mostrarla inmediatamente en el cuadro destinado para ello?, en mi caso
CuadroImagen

Esta es la primera vez que trabajo con imagenes.

Gracias.

AIM: PintamonoChile
YIM: pintamono79 en yahoo punto es
IRC: Pinatmono-
Jabber:
Radio: http://pintamono.no-ip.org (OffLine)
Fotolog: http://www.fotolog.com/pintamono_/
Flickr: http://www.flickr.com/photos/pintamono/
Videos: http://www.youtube.com/user/pintamono





Respuesta Responder a este mensaje
#3 RFOG
15/01/2007 - 19:59 | Informe spam
Vaya, nunca he usado controles web, pero por la documentación, el asunto
está un poco limitadillo.

Tendrás que guardar tu imagen a disco y luego mediante el método ImageUrl
del Image cargarlo.

Pero lo mismo hay otra forma, ya te digo que nunca he manejado controles
web, lo mío está más al lado del escritorio. Por no tener no tiene ni
evento Paint para que lo dibujaras tu a mano.

On Mon, 15 Jan 2007 19:24:46 +0100, Pintamono
wrote:

Gracias, te cuento que el CuadroImagen no es un PictureBox sino que un
"System.Web.UI.WebControls.Image"
y no me funciona eso de "CuadroImagen.Image=i"


"RFOG" wrote in message
news:%
Pues cuando quieras pintarla, llama al Invalidate del CuadroImagen,
sobreescribe el evento Paint, y allí la pintas. Si la pintas fuera del
Paint, cada vez que algo tape tu imagen, esta no se volverá a pintar. Y
si
quieres que el .NET lo haga solo, asigna tu imagen a CuadroImagen, así:

CuadroImagen.Image=i;

La desventaja de este modo es que si ese cuadro es una composición o
mezcla dinámica, resulta bastante lento e ineficiente irla cambiando de
esa forma.

Suponiendo que CuadroImage sea un PictureBox.

Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
>> Nunca la persona llega a tal grado de perfección como cuando llena un
impreso de solicitud de trabajo.

"Pintamono" wrote in message
news:
Logré colocar texto en una imagen gracias a un articulo que encontre
acá:
http://www.bobpowell.net/modifyImage.htm

El problema que tengo ahora es que si bien la pagina da los resultados
esperados hay algo que no me gusta y es que la imagen la graba en el
disco..

Esto es lo que estoy haciendo:


protected System.Web.UI.WebControls.Image CuadroImagen;

CuadroImagen.Visible=true;
System.Drawing.Image i >>> System.Drawing.Image.FromFile("d:\\imagen\\untitled.jpg"); // imagen
original
Graphics g=Graphics.FromImage(i);

// desde acá comienzo a colocar el texto en la imagen a modificar

g.DrawString("531",new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(45,84,94,25));
g.DrawString("96300",new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(45,115,94,25));
g.DrawString(DateTime.Now.ToShortDateString(),new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(136,115,94,25));
g.DrawString(TotalMontoPago.ToString(),new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(365,210,94,25));
g.Dispose();

// hasta acá

string path >>> "d:\\inetpub.alt\\webgp\\wwwgp\\imagen\\testimage"+DateTime.Now.Second.ToString()+".jpg";
// nueva imagan
//la imagen la grabo con los segundos de cuando fue creada para que no
me
genere problemas si alguien mas esta haciendo lo mismo.

CuadroImagen.ImageUrl = path;
i.Save(path.ToString(),System.Drawing.Imaging.ImageFormat.Jpeg); //
Grabo
la imagen.
i.Dispose();

La duda es: ¿Cómo puedo hacer para no grabar la imagen al disco y
mostrarla inmediatamente en el cuadro destinado para ello?, en mi caso
CuadroImagen

Esta es la primera vez que trabajo con imagenes.

Gracias.

AIM: PintamonoChile
YIM: pintamono79 en yahoo punto es
IRC: Pinatmono-
Jabber:
Radio: http://pintamono.no-ip.org (OffLine)
Fotolog: http://www.fotolog.com/pintamono_/
Flickr: http://www.flickr.com/photos/pintamono/
Videos: http://www.youtube.com/user/pintamono














Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Cuando una lámpara se destroza, la luz yace muerta en el suelo.
Respuesta Responder a este mensaje
#4 Pintamono
15/01/2007 - 21:55 | Informe spam
nada que hacer entonces, he tenido que guardarla en una carpeta temporal y
eliminarla al terminar de usarla...


Gracias.

"RFOG" wrote in message
news:
Vaya, nunca he usado controles web, pero por la documentación, el asunto
está un poco limitadillo.

Tendrás que guardar tu imagen a disco y luego mediante el método ImageUrl
del Image cargarlo.

Pero lo mismo hay otra forma, ya te digo que nunca he manejado controles
web, lo mío está más al lado del escritorio. Por no tener no tiene ni
evento Paint para que lo dibujaras tu a mano.

On Mon, 15 Jan 2007 19:24:46 +0100, Pintamono
wrote:

Gracias, te cuento que el CuadroImagen no es un PictureBox sino que un
"System.Web.UI.WebControls.Image"
y no me funciona eso de "CuadroImagen.Image=i"


"RFOG" wrote in message
news:%
Pues cuando quieras pintarla, llama al Invalidate del CuadroImagen,
sobreescribe el evento Paint, y allí la pintas. Si la pintas fuera del
Paint, cada vez que algo tape tu imagen, esta no se volverá a pintar. Y
si
quieres que el .NET lo haga solo, asigna tu imagen a CuadroImagen, así:

CuadroImagen.Image=i;

La desventaja de este modo es que si ese cuadro es una composición o
mezcla dinámica, resulta bastante lento e ineficiente irla cambiando de
esa forma.

Suponiendo que CuadroImage sea un PictureBox.

Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
>>> Nunca la persona llega a tal grado de perfección como cuando llena un
impreso de solicitud de trabajo.

"Pintamono" wrote in message
news:
Logré colocar texto en una imagen gracias a un articulo que encontre
acá:
http://www.bobpowell.net/modifyImage.htm

El problema que tengo ahora es que si bien la pagina da los resultados
esperados hay algo que no me gusta y es que la imagen la graba en el
disco..

Esto es lo que estoy haciendo:


protected System.Web.UI.WebControls.Image CuadroImagen;

CuadroImagen.Visible=true;
System.Drawing.Image i >>>> System.Drawing.Image.FromFile("d:\\imagen\\untitled.jpg"); // imagen
original
Graphics g=Graphics.FromImage(i);

// desde acá comienzo a colocar el texto en la imagen a modificar

g.DrawString("531",new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(45,84,94,25));
g.DrawString("96300",new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(45,115,94,25));
g.DrawString(DateTime.Now.ToShortDateString(),new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(136,115,94,25));
g.DrawString(TotalMontoPago.ToString(),new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(365,210,94,25));
g.Dispose();

// hasta acá

string path >>>> "d:\\inetpub.alt\\webgp\\wwwgp\\imagen\\testimage"+DateTime.Now.Second.ToString()+".jpg";
// nueva imagan
//la imagen la grabo con los segundos de cuando fue creada para que no
me
genere problemas si alguien mas esta haciendo lo mismo.

CuadroImagen.ImageUrl = path;
i.Save(path.ToString(),System.Drawing.Imaging.ImageFormat.Jpeg); //
Grabo
la imagen.
i.Dispose();

La duda es: ¿Cómo puedo hacer para no grabar la imagen al disco y
mostrarla inmediatamente en el cuadro destinado para ello?, en mi caso
CuadroImagen

Esta es la primera vez que trabajo con imagenes.

Gracias.

AIM: PintamonoChile
YIM: pintamono79 en yahoo punto es
IRC: Pinatmono-
Jabber:
Radio: http://pintamono.no-ip.org (OffLine)
Fotolog: http://www.fotolog.com/pintamono_/
Flickr: http://www.flickr.com/photos/pintamono/
Videos: http://www.youtube.com/user/pintamono














Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
> Cuando una lámpara se destroza, la luz yace muerta en el suelo.
Respuesta Responder a este mensaje
#5 RFOG
15/01/2007 - 23:02 | Informe spam
No es nada malo. Además, si estás en un server, sin que vaya muy ahogado,
ni toca el disco duro.

Para crear y trastear con temporales lo mejor es

Path.GetRandomFileName,
Path.GetTempPath
Path.GetTempFileName


On Mon, 15 Jan 2007 21:55:41 +0100, Pintamono
wrote:

nada que hacer entonces, he tenido que guardarla en una carpeta temporal
y
eliminarla al terminar de usarla...


Gracias.

"RFOG" wrote in message
news:
Vaya, nunca he usado controles web, pero por la documentación, el asunto
está un poco limitadillo.

Tendrás que guardar tu imagen a disco y luego mediante el método
ImageUrl
del Image cargarlo.

Pero lo mismo hay otra forma, ya te digo que nunca he manejado controles
web, lo mío está más al lado del escritorio. Por no tener no tiene ni
evento Paint para que lo dibujaras tu a mano.

On Mon, 15 Jan 2007 19:24:46 +0100, Pintamono
wrote:

Gracias, te cuento que el CuadroImagen no es un PictureBox sino que un
"System.Web.UI.WebControls.Image"
y no me funciona eso de "CuadroImagen.Image=i"


"RFOG" wrote in message
news:%
Pues cuando quieras pintarla, llama al Invalidate del CuadroImagen,
sobreescribe el evento Paint, y allí la pintas. Si la pintas fuera del
Paint, cada vez que algo tape tu imagen, esta no se volverá a pintar.
Y
si
quieres que el .NET lo haga solo, asigna tu imagen a CuadroImagen,
así:

CuadroImagen.Image=i;

La desventaja de este modo es que si ese cuadro es una composición o
mezcla dinámica, resulta bastante lento e ineficiente irla cambiando
de
esa forma.

Suponiendo que CuadroImage sea un PictureBox.

Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
>>>> Nunca la persona llega a tal grado de perfección como cuando llena un
impreso de solicitud de trabajo.

"Pintamono" wrote in message
news:
Logré colocar texto en una imagen gracias a un articulo que encontre
acá:
http://www.bobpowell.net/modifyImage.htm

El problema que tengo ahora es que si bien la pagina da los
resultados
esperados hay algo que no me gusta y es que la imagen la graba en el
disco..

Esto es lo que estoy haciendo:


protected System.Web.UI.WebControls.Image CuadroImagen;

CuadroImagen.Visible=true;
System.Drawing.Image i >>>>> System.Drawing.Image.FromFile("d:\\imagen\\untitled.jpg"); // imagen
original
Graphics g=Graphics.FromImage(i);

// desde acá comienzo a colocar el texto en la imagen a modificar

g.DrawString("531",new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(45,84,94,25));
g.DrawString("96300",new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(45,115,94,25));
g.DrawString(DateTime.Now.ToShortDateString(),new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(136,115,94,25));
g.DrawString(TotalMontoPago.ToString(),new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(365,210,94,25));
g.Dispose();

// hasta acá

string path >>>>> "d:\\inetpub.alt\\webgp\\wwwgp\\imagen\\testimage"+DateTime.Now.Second.ToString()+".jpg";
// nueva imagan
//la imagen la grabo con los segundos de cuando fue creada para que
no
me
genere problemas si alguien mas esta haciendo lo mismo.

CuadroImagen.ImageUrl = path;
i.Save(path.ToString(),System.Drawing.Imaging.ImageFormat.Jpeg); //
Grabo
la imagen.
i.Dispose();

La duda es: ¿Cómo puedo hacer para no grabar la imagen al disco y
mostrarla inmediatamente en el cuadro destinado para ello?, en mi
caso
CuadroImagen

Esta es la primera vez que trabajo con imagenes.

Gracias.

AIM: PintamonoChile
YIM: pintamono79 en yahoo punto es
IRC: Pinatmono-
Jabber:
Radio: http://pintamono.no-ip.org (OffLine)
Fotolog: http://www.fotolog.com/pintamono_/
Flickr: http://www.flickr.com/photos/pintamono/
Videos: http://www.youtube.com/user/pintamono














Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
>> Cuando una lámpara se destroza, la luz yace muerta en el suelo.









Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Cuando una lámpara se destroza, la luz yace muerta en el suelo.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida