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

#6 Victor Hugo
21/02/2007 - 17:36 | Informe spam
Hola.
Aprovecho de colgarme de este tema que me interesa. Es que no había
trabajado nunca con imágenes. Estoy desarrollando una aplicación windows con
SqlServer 2000 como BD y a un formulario le inserté un objeto picturebox,
entonces si el campo de la tabla sql lo defino como imagen, cómo hago para
insertar esa imagen desde el formulario en la bd? y después, cómo hago para
recuperar la imagen de la BD y ponerla denuevo en el picture box?

Gracias.
Victor Hugo



"Alberto Poblacion" wrote:

"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
#7 Victor Hugo
21/02/2007 - 22:47 | Informe spam
Estoy con SqlServer 2000.
intenté lo que me indicaste pero no funcionó.
Mira, para grabar el campo de la tabla en la base de datos es tipo "Image",
no se si sea correcto. Además, usé prácticamente como me indicaste.
Dim ms As New MemoryStream
PB_FotoEmpleado.Image.Save(ms, PB_FotoEmpleado.Image.RawFormat)
Dim MatrizImagen() As Byte = ms.GetBuffer
ms.Close()
Pero como estoy haciendo un insert en la tabla de la base:
Insert into Empleados_tbl
Values ('" & Rut_Empleado & "', ' & MatrizImagen & ')

y para leer, como estoy usando un DataReader
(en medio del While objReader.read), puse:

Dim MatrizImagen() As Byte = CType(objReader.Item(27), Byte())
Dim ms As New MemoryStream(MatrizImagen)

Me.PB_FotoEmpleado.Image = Image.FromStream(ms)


donde el objReader.Item(27) se supone que trae la imagen guardada.

Bueno, ojalá sirva lo que te indico para que me puedas ayudar. gracias
denuevo.

Victor


"Cid" wrote:


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.

Me gustaria aplicar esta sugerencia, ¿tienes algun ejemplo o indicacion?
Muy simple me vale luego ya lo voy complicando yo, es que no se por donde empezar..
Respuesta Responder a este mensaje
#8 Alberto Poblacion
21/02/2007 - 23:12 | Informe spam
"Cid" wrote in message
news:
[SQL Server 2005 ...crear una DLL con .Net]
Me gustaria aplicar esta sugerencia, ¿tienes algun ejemplo o indicacion?
Muy simple me vale luego ya lo voy complicando yo, es que no se por donde
empezar...



Tienes la documentación completa aqui:
http://msdn2.microsoft.com/es-es/li...31102.aspx

Para un ejemplo "Hola Mundo", mira esta url:
http://msdn2.microsoft.com/es-es/li...60847.aspx
Respuesta Responder a este mensaje
#9 Victor Hugo
21/02/2007 - 23:29 | Informe spam
La documentación así como el ejemplo no tienen que ver con el tema de
insertar y recuperar imágenes de SQL Server2000.
No tengo problemas con los datos, es con la imágen contenida en un
picturebox que debo guardar en la BD y recuperarla después para ponerla en el
mismo PictureBox


"Alberto Poblacion" wrote:

"Cid" wrote in message
news:
> [SQL Server 2005 ...crear una DLL con .Net]
> Me gustaria aplicar esta sugerencia, ¿tienes algun ejemplo o indicacion?
> Muy simple me vale luego ya lo voy complicando yo, es que no se por donde
> empezar...

Tienes la documentación completa aqui:
http://msdn2.microsoft.com/es-es/li...31102.aspx

Para un ejemplo "Hola Mundo", mira esta url:
http://msdn2.microsoft.com/es-es/li...60847.aspx



Respuesta Responder a este mensaje
#10 Alberto Poblacion
22/02/2007 - 09:32 | Informe spam
"Victor Hugo" wrote in message
news:
La documentación así como el ejemplo no tienen que ver con el tema de
insertar y recuperar imágenes de SQL Server2000.
No tengo problemas con los datos, es con la imágen contenida en un
picturebox que debo guardar en la BD y recuperarla después para ponerla en
el
mismo PictureBox



Víctor, esto no era una respuesta para tí, era para la pregunta de
"Cid", que quería saber cómo meter código de .Net dentro de Sql Server 2005.
Si lees las News desde el Outlook Express, éste te anida los mensajes
correctamente para ver cuál responde a cuál otro. Si las lees desde el
interface web, fíjate en la cabecera de la respuesta que dice ""Cid" <...>
wrote in message ...".
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida