Cargar imágenes desde un servidor

20/02/2007 - 11:29 por henpat | Informe spam
Hola a todos.
Tengo un problema cuando cargo imágenes desde un ordenator cliente.
Las imágnes son muy grandes y tardan mucho tiempo (relativamente) a
descargarse en el control PictureBox.
Existe alguna manera de no desargar toda la imagen en su tamaño completo?
Mi PictureBox no es muy grande, la imagen se adapta al tamaño del PictureBox
pero sigue siendo pesada, hay alguna manera de reducir el tamaño de la
imagen (o la calidad) u otra cosa programáticamente?

Muchas gracias por sus consejos.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
20/02/2007 - 12:42 | Informe spam
"henpat" wrote in message
news:%
Tengo un problema cuando cargo imágenes desde un ordenator cliente.
Las imágnes son muy grandes y tardan mucho tiempo (relativamente) a
descargarse en el control PictureBox.
Existe alguna manera de no desargar toda la imagen en su tamaño completo?
Mi PictureBox no es muy grande, la imagen se adapta al tamaño del
PictureBox pero sigue siendo pesada, hay alguna manera de reducir el
tamaño de la imagen (o la calidad) u otra cosa programáticamente?



Si en el servidor estás usando un objeto System.Drawing.Image para
cargar la imagen antes de transmitirla al cliente, puedes encogerla con el
método GetTumbnailImage del objeto Image, que te deja especificar los pixels
de anchura y altura a los que quieres reducir la imagen.
Respuesta Responder a este mensaje
#2 henpat
20/02/2007 - 13:25 | Informe spam
Gracias
Cómo sé si estoy usando el objeto System.Drawing.Image
Por el momento estoy llamando a la imagen así:
Me.PictureBOx1.ImageLocation = My.Settings.PicturesMap & TextID.Text &
".jpg"

Gracias de antemano.

"Alberto Poblacion"
escribió en el mensaje news:%
"henpat" wrote in message
news:%
Tengo un problema cuando cargo imágenes desde un ordenator cliente.
Las imágnes son muy grandes y tardan mucho tiempo (relativamente) a
descargarse en el control PictureBox.
Existe alguna manera de no desargar toda la imagen en su tamaño completo?
Mi PictureBox no es muy grande, la imagen se adapta al tamaño del
PictureBox pero sigue siendo pesada, hay alguna manera de reducir el
tamaño de la imagen (o la calidad) u otra cosa programáticamente?



Si en el servidor estás usando un objeto System.Drawing.Image para
cargar la imagen antes de transmitirla al cliente, puedes encogerla con el
método GetTumbnailImage del objeto Image, que te deja especificar los
pixels de anchura y altura a los que quieres reducir la imagen.


Respuesta Responder a este mensaje
#3 Alberto Poblacion
20/02/2007 - 22:26 | Informe spam
"henpat" wrote in message
news:
Cómo sé si estoy usando el objeto System.Drawing.Image
Por el momento estoy llamando a la imagen así:
Me.PictureBOx1.ImageLocation = My.Settings.PicturesMap & TextID.Text &
".jpg"



Me imagino que dentro del My.Settings.PicturesMap lo que tienes metido
es una ruta al servidor, del tipo "\\servidor\directoriodeimagenes". Esa
ruta se la estás asignando al PictureBox, con lo cual éste abre el archivo y
presenta la imagen. Por lo tanto, no estás ejecutando ninguna parte de tu
aplicación en el servidor, y solamente lo usas como servidor de ficheros. Si
tu problema es que la imagen es demasiado grande y tarda mucho en
transportarse por la red, la única solución es "encogerla" en el servidor.
Si primero la transmites al cliente para que el cliente la "encoja",
entonces no te ahorras nada de tráfico por la red. Y si la quieres encoger
en el servidor antes de transmitirla, tendrás que convertir la aplicación en
un programa cliente-servidor para que se ejecute algo de código en el
servidor que encoja la imagen antes de transmitirla. No te basta con solo el
programa cliente para conseguir lo que quieres.
Respuesta Responder a este mensaje
#4 henpat
21/02/2007 - 10:33 | Informe spam
Gracias...
Lo haré desde la parte servidor, eonciéndolas diréctamente allí.

"Alberto Poblacion"
escribió en el mensaje news:
"henpat" wrote in message
news:
Cómo sé si estoy usando el objeto System.Drawing.Image
Por el momento estoy llamando a la imagen así:
Me.PictureBOx1.ImageLocation = My.Settings.PicturesMap & TextID.Text &
".jpg"



Me imagino que dentro del My.Settings.PicturesMap lo que tienes metido
es una ruta al servidor, del tipo "\\servidor\directoriodeimagenes". Esa
ruta se la estás asignando al PictureBox, con lo cual éste abre el archivo
y presenta la imagen. Por lo tanto, no estás ejecutando ninguna parte de
tu aplicación en el servidor, y solamente lo usas como servidor de
ficheros. Si tu problema es que la imagen es demasiado grande y tarda
mucho en transportarse por la red, la única solución es "encogerla" en el
servidor. Si primero la transmites al cliente para que el cliente la
"encoja", entonces no te ahorras nada de tráfico por la red. Y si la
quieres encoger en el servidor antes de transmitirla, tendrás que
convertir la aplicación en un programa cliente-servidor para que se
ejecute algo de código en el servidor que encoja la imagen antes de
transmitirla. No te basta con solo el programa cliente para conseguir lo
que quieres.

Respuesta Responder a este mensaje
#5 Alberto Poblacion
21/02/2007 - 11:32 | Informe spam
"Cid" wrote in message
news:
En relacion a lo que comentas de aplicacion cliente-servidor
te queria hacer una pregunta, es que no tengo experiencia,
yo queria que mi aplicacion cliente mandase ejecutar una
funcion en el servidor, como lo puedo hacer?



Con .Net hay dos formas más o menos sencilas de conseguirlo: Web
Services y Remoting.

En caso de usar Web Services, hay que tener IIS en el servidor. El Web
Service se genera de forma similar a una página Web, pero es una plantilla
distinta en visual studio. Una vez escrita la función que quieres llamar
dentro de la plantilla, lo compilas y "conectas" el cliente diciéndole desde
Visual Studio "Añadir Referencia Web", y una vez hecho eso la rutina del
servidor la ves desde el programa fuente del lado cliente como si fuera una
subrutina suya escrita en una dll del lado cliente.

Remoting es distinto: Escribes una clase en el servidor, la metes dentro
de un Servicio Windows (otra pantilla del visual studio), y en el arranque
del servicio registras la clase para ser usada en remoting. Esto consigue
que se ponga a escuchar en un puerto TCP configurable por tí, sin necesidad
de que el servidor tenga IIS. Desde el cliente, ejecutas una instrucción
para registrar el servidor y/o lo registras en el app.config y/o el "new" de
la clase desde el cliente lo reemplazas por una llamada al Activator para
que la instancia de la clase se cree en el servidor. A partir de ese momento
las llamadas a los métodos de esa clase van a parar al servidor.

En tu caso, en el que las llamadas las estás haciendo a un Sql en el
servidor, hay una alternativa más: Si la versión del servidor Sql es SQL
Server 2005, puedes crear una DLL con .Net y registrársela al Sql Server de
forma que éste la llame como si fuera un procedimiento almacenado o un
trigger. De esta forma, desde el cliente no tienes que hacer nada:
símlemente llamas al procedimiento almacenado, y el servidor se encarga de
todo.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida