none
Tamaño de imágenes alojadas en el servidor RRS feed

  • Pregunta

  • Hola

    Con este código puedo saber el tamaño  de imágenes alojas en el sistema de archivos

          Dim fs As FileStream = New FileStream(NombreDelArchivo, FileMode.Open, FileAccess.Read, FileShare.Read)
            Dim LaImagen As System.Drawing.Image
            LaImagen = System.Drawing.Image.FromStream(fs)
            Image2.Width = LaImagen.Width
            Image2.Height = LaImagen.Height
            fs.Close()
            fs = Nothing

    Pero si la imagen está en el servidor ¿Como se hace?

    Gracias


    Pedro López

    viernes, 15 de enero de 2016 10:56

Respuestas

  • Hola

    La parte de tu codigo:

    Dim fs As FileStream = New FileStream(aux, FileMode.Open, FileAccess.Read, FileShare.Read)


    Cambiala por:

    Dim fs As FileStream = New FileStream(Server.MapPath(aux), FileMode.Open, FileAccess.Read, FileShare.Read)

    Para que encuentre el archivo correctamente.

    Saludos.

    • Marcado como respuesta Pearloga viernes, 15 de enero de 2016 17:52
    viernes, 15 de enero de 2016 15:21

Todas las respuestas

  • hola

    >>Pero si la imagen está en el servidor ¿Como se hace?

    de la misma forma solo que indicando una ruta dentro del servidor

    Podrias usar el Server.MapPath() para obtener la ruta fisica de la imagen dentro del servidor y aplicar ese mismo codigo

    Entiendo que planteas validar del lado del servidor, o es del lado del cliente ?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 15 de enero de 2016 11:20
  • Hola Leandro

    La historia es así:

    Tengo una BD que en un campo, columna 5, guarda el nombre de una imagen que previamente fue subida por algún usuario. En la página para ver las fotos, y los comentarios agregados, uso un GridView. Al  seleccionar un registro se activa el siguiente codigo

      Protected Sub GridView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles GridView1.SelectedIndexChanged
            Dim aux As String = Me.GridView1.Rows(Me.GridView1.SelectedIndex).Cells(5).Text
            aux = "~/Imagenes/" & aux
            Dim fs As FileStream = New FileStream(aux, FileMode.Open, FileAccess.Read, FileShare.Read)
            Dim LaImagen As System.Drawing.Image
            LaImagen = System.Drawing.Image.FromStream(fs)
            Image2.Width = LaImagen.Width
            Image2.Height = LaImagen.Height
            fs.Close()
            fs = Nothing
            Image2.ImageUrl = aux
        End Sub

    y me da el siguiente error

    No se puede encontrar una parte de la ruta de acceso 'C:\Program Files (x86)\IIS Express\~\Imagenes\ima00055.jpg'.

    La ruta que lleva aux es correcta para Image2.ImageUrl (se carga correctamente), pero es incorrecta para ver el tamaño del archivo.

    Te preguntaras por que doy toda esta vuelta. Resulta que al visualizar la imagen el usuario pude modificar el tamaño de Image2 y necesito tener una referencia para volver al tamaño original  .

    Ahora te preguntarás por que no tomo el tamaño de image2 ni bien carga la imagen. Esto funciona con la primer imagen que selecciona, pero si cambia el tamaño original de image2 queda "pegado" y las siguientes imágenes se visualizan con ese tamaño y no se puede ver en su tamaño original.

    Ahora estoy pensando "si uso IsPostBack " tal vez se resuelva.

    Gracias


    Pedro López

    viernes, 15 de enero de 2016 12:39
  • Hola

    La parte de tu codigo:

    Dim fs As FileStream = New FileStream(aux, FileMode.Open, FileAccess.Read, FileShare.Read)


    Cambiala por:

    Dim fs As FileStream = New FileStream(Server.MapPath(aux), FileMode.Open, FileAccess.Read, FileShare.Read)

    Para que encuentre el archivo correctamente.

    Saludos.

    • Marcado como respuesta Pearloga viernes, 15 de enero de 2016 17:52
    viernes, 15 de enero de 2016 15:21