Hola Carlos,
Te cuento que haria yo con esa situacion. De primera intencion lo haria tal
como recomende en el post anterior. No optimizaria nada, nunca suelo
optimizar prematuramente.
Luego, si fuera necesario optimizar o si tenes garantizado un alto trafico
en el sitio, analizaria el caso puntual, por ejemplo, si lo mas comun es que
se pidan las cuatro imagenes en el mismo request y si las cuatro imagenes
estan en el mismo registro de la base de datos, tendrias dos opciones:
*
traeria las cuatro y armaria en runtime una sola imagen con las
cuatro. Devolveria esa imagen cuadruple y usaria la tecnica "CSS sprites"
[1] con CSS para mostrar cada una en su lugar.
*
si lo anterior no es posible, traeria las cuatro imagenes y las
almacenaria en el cache de ASP.NET (no en la sesion) con un tiempo de
vencimiento muy chico, 10 o 15 segundos. cuando vinieran las demas
peticiones, las sacaria del cache. De todas maneras, esto es un poquitin mas
dificil de hacer y estoy seguro de que seria mas complicado.
Sobre cualquiera de las opciones y, si el patron de uso es que las mismas
imagenes se piden una y otra vez, usaria el output cache de asp.NET [2]
De todas maneras, no optimicen, mas alla de un buen diseño, a menos que
esten seguros de que lo necesitan.
Un saludo
[1] http://www.google.com/search?q=css+sprites
[2] http://www.google.com/search?q=ASP.NET+output+cache
Carlos Peix
[EMAIL PROTECTED]
tel: 4257-4622
cel: 15-4406-7571
_____
De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Somosa Arellano,
Carlos
Enviado el: Jueves, 31 de Julio de 2008 01:33 p.m.
Para: vbnet List Member
Asunto: [vbnet] Mostrar Imagen desde campo Blob (en control Image)
Hola Carlos ,
en el caso que fueran mas de una imagen, es posible hacer esto?, si fuera
asi, tiene algun impacto sobre el rendimiento?
ImgFrontalLt.ImageUrl = "~/VistaImagen.aspx?id=" + sIdExpediente + "_A";
ImgPosterior.ImageUrl = "~/VistaImagen.aspx?id=" + sIdExpediente + "_B";
ImgLateralIz.ImageUrl = "~/VistaImagen.aspx?id=" + sIdExpediente + "_C";
ImgLateralDr.ImageUrl = "~/VistaImagen.aspx?id=" + sIdExpediente + "_D";
Sobre tu comentario, creo que de esto se trata, de mejorar todos,
no hay porque ponerse de malas y tampoco creo que nadie lo haga.
Gracias a todos los que ayudan a crecer a personas como yo quee estamos
iniciando en el desarrollo web.
Atentamente,
Carlos Somosa Arellano
Oficina de Tecnología de Información
Ministerio de Transportes y Comunicaciones
Telefono 615-7800 (1694)
_____
De: [email protected] en nombre de Carlos Peix
Enviado el: jue 31/07/2008 05:11
Para: vbnet List Member
Asunto: [vbnet] Mostrar Imagen desde campo Blob (en control Image)
Hola Hector,
Seguramente habras eliminado detalles que pueden hacer que mi observacion
sea incorrecta pero de todas maneras lo menciono. En cualquier caso, pido
disculpas por el consejo no solicitado.
Existe otra posibilidad de implementacion del codigo que enviaste que, a mi
juicio, evita algun problema. Vos estas dejando la firma en una variable de
sesion, eso, potencialmente, podria forzar demasiado el uso de memoria en el
servidor, ya sea que la uses en otras partes de la aplicacion o no.
Te sugiero este codigo como alternativa:
string idFirma = Request["id"];
Response.ContentType = "image/jpeg";
// Descarto que se te ocurrira un mejor nombre para el siguiente metodo
byte[] byteArray = ObtenerFIrmaPorIdDesdeLaBaseDeDatos(id);
Response.BinaryWrite(byteArray);
y luego desde otra pagina la llamas asi:
// En lugar de guardar la firma en la sesion, envias a la pagina un id de la
misma
this.Image2.ImageUrl = "~/REN_Firma.aspx?id=HH1234";
Este enfoque, a mi juicio, es mas escalable.
Un saludo
Carlos Peix
[EMAIL PROTECTED]
tel: 4257-4622
cel: 15-4406-7571
_____
De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Hector Hernandez
Enviado el: Miércoles, 30 de Julio de 2008 12:38 p.m.
Para: vbnet List Member
Asunto: [vbnet] Mostrar Imagen desde campo Blob (en control Image)
yo he echo asi:
creas una pagina y en el load le pones
Response.ContentType = "image/jpeg";
byte[] byteArray = (byte[])Session["firma"];
Response.BinaryWrite(byteArray);
y luego desde otra pagina la llamas asi:
Session["firma"] = Firma;
this.Image2.ImageUrl = "~/REN_Firma.aspx";
claro que Firma es un array de bytes el cual obtendras desde el tu db...
el Image2 es un control <asp:Image>
pienso que deberia funcionar sin necesidad que grabes en disco...
_____
Date: Wed, 30 Jul 2008 10:29:24 -0500
From: [EMAIL PROTECTED]
To: [email protected]
Subject: [vbnet] Mostrar Imagen desde campo Blob (en control Image)
Hola Carlos,
te refieres a que convertir bytes() a un objeto Image, grabarlo en el disco
con Image.Save() o algo asi y luego mapear la ruta del control Image a lo
guardado?
parece sencillo, lo voy a intentar.
Gracias!.
karlos.
2008/7/30 Carlos Bernardo Maggiotti <[EMAIL PROTECTED]>
vas a tener que generarte las imagenes a partir del binario...
Y de ahi mandar a cargar la imagen mediante ImageUrl...
Saludos y espero que te sirva
CarlosMag
_____
Date: Wed, 30 Jul 2008 09:24:42 -0500
From: [EMAIL PROTECTED]
To: [email protected]
Subject: [vbnet] Mostrar Imagen desde campo Blob (en control Image)
Hola listeros,
tengo que mostrar una imagen almacenada en un campo blod de una base de
datos,
leo el registro usando datareader, y la almaceno en una variable arreglo de
bytes,
pero tengo problemas para mostrar la imagen en el control image.
antes, en WinForms era mas sencillo, porq el control picturebox tenia
propiedad image o algo asi
En WebForms no se como, ya que el control image tiene como origen una ruta
del disco, imagino que del servidor,
a alguien le paso antes?
alguna idea por favor.
Karlos.
_____
¿Aburrido? Ingresá ya y divertite como nunca en MSN Juegos. MSN
<http://juegos.ar.msn.com/> Juegos
--
Karlos
_____
Discover the new Windows Vista Learn more!
<http://search.msn.com/results.aspx?q=windows+vista&mkt=en-US&form=QBRE>