Spanish Problema Image View [SOLUCIONADO]

Discussion in 'Spanish Forum' started by TheFalcon, Mar 20, 2015.

  1. TheFalcon

    TheFalcon Active Member Licensed User

    Buenas, perdón las molestias, tengo una dudilla.
    Tengo un Imageview que cuando doy a click me abre las galerías para que seleccione una imagen y quede reflejada en dicho Imageview.

    El problema es que a veces me la muestra y a veces no, todas están echa con la cámara del móvil con lo cual tienen que tener el mismo tamaño y formato.

    ¿Alguien sabe por que puede ser? , pongo el código.

    Codigo cuando pulso el ImageView
    Code:
    Try
          VerGaleriaFotos.Show(
    "image/ *jpeg","Seleccione Imagen")
       
    Catch
          
    Log("Error al cargar galería")
       
    End Try
    Evento que muestra la foto luego en el Listview

    Code:
    Log("EventoGaleriaFotos_Result Success: " & Success)
      
      
        
    If Success = False Then Return ' no se seleccionó imagen
      
        
    Log("Dir " & Dir) ' Directorio de la imagen
        Log("FileName " & FileName) ' Nombre del fichero

       
    ' ya puedes emplearlo en cualquier sitio
       ImagenSeleccionada = FileName 
       DirSeleccionado = Dir
      
         IVfoto.Bitmap = 
    LoadBitmap(Dir,FileName) ' con esto mostramos la foto en el listview
        
    End Sub
     
  2. TheFalcon

    TheFalcon Active Member Licensed User

    Buenas de nuevo, e comprobado varias cosas y el problema esta cuando la imagen que selecciono esta en la Carpeta CÁMARA con el Icono de la cámara, si cojo una imagen de cualquier otra carpeta ya sea Screen, whatsapp imágenes etc la pone sin problemas.

    De vez en cuando pero muy de vez en cuando si e cargado una imagen de otra galería y luego escojo la de la cámara si me la pone.

    Alguien sabe a que se puede deber esta paranolla Uso la librería Camera 2.20 no se si habrá una mas reciente que vaya mejor.

    Gracias
     
  3. bgsoft

    bgsoft Well-Known Member Licensed User

    Hola

    Esto a veces ocurre con algunas fotos, la mayoria de veces por falta de memoria en el dispositivo, y aunque la foto la hagas con la cámara, el tamaño no siempre será el mismo, ya que los archivos jpg son comprimidos y la compresión depende de los datos redundantes de la foto, por eso los tamaños son diferentes.

    En vez de cargar la foto en el bitmap asi como lo estas haciendo:
    Code:
    IVfoto.Bitmap = LoadBitmap(Dir,FileName) ' con esto mostramos la foto en el listview
    Cargalo asi:

    Code:
    IVfoto.InitializeSample (Dir,FileName,10%x,10%y)
    Empieza por ese valor del 10%, si se ve, subelo poco a poco hasta que deje de verse.

    Otra cosa buena a hacer es una vez que no veas la imagen descargarla, asi desaloja memoria del dispositivo y no tendras estos problemas.

    Cuando vayas a hacer este cambio, antes de ver la foto borra la memoria del dispositivo, asi tambien sabras si es un problema de memoria.

    Saludos
     
  4. JordiCP

    JordiCP Well-Known Member Licensed User

    No estoy seguro, pero tal como lo cuentas puede que no tenga nada que ver con la memoria, y sí con la manera en que Android trata los nombres de fichero y directorio de Android. Esto se puede ver mirando el tipo de mensaje de error que te da cuando no puede cargar la imagen.

    Si es así,

    Algunas veces, las rutas a archivos internos que trata Android no son "fisicas" sino "logicas" por lo que necesitan ser convertidas. Por ejemplo, el "path" logico a la galeria lo devuelve de manera diferente según versión de Android y si el dispositivo está conectado o en modo avión (no me preguntes por qué pero es así)

    ¿Puedes poner la rutina completa del evento donde asignas Dir y Filename? ¿Cuáles son los valores de estas variables en un caso en que sí/no te deje cargar la imagen?


    (si no te da ningún error y sencillamente no muestra nada, prueba añadiendo IVfoto.Invalidate al final)
     
  5. bgsoft

    bgsoft Well-Known Member Licensed User

    Hola

    Las veces que he tenido problemas iguales a TheFalcon fueron por problemas de memoria y con el
    InitializeSample se solucionaron. Tambien pensé que podria ser un problema de nombres o directorios, y simplemente cree una carpeta 0 y la imagen la renombré a 1.jpg y le pasaba lo mismo, y los sintomas eran iguales (creo) por que tampoco me daba error al cargar, simplemente no se veia o se veia durante un momento y luego desaparecia. Y otras veces la cargaba sin mas. Cuando hice lo del InitializeSample se acabó el problema.

    He leido de la galeria de imágenes y del gestor de sonidos que no te devuelven la dirección real en el dispositivo y nunca tuve problemas, por que si los hubiese tenido me hubiese dado un error de "fichero no encontrado" y creo que esto no es lo que dice TheFalcon, por eso le planteé un problema de memoria aunque tampoco le de un mensaje de error de memoria, pero los sintomas son los mismos que me habia ocurrido a mi.

    Si está empleando un Bitmap (el objeto, no la propiedad) esta propiedad no la tiene, la tiene un ImageView.

    Saludos
     
    JordiCP likes this.
  6. JordiCP

    JordiCP Well-Known Member Licensed User

    Sí, de hecho puede ser por memoria (y casi siempre peta por ahí), pero con los datos actuales también cabe esta posibilidad, aunque como tu dices tendría que dar el mensaje de error. por eso digo que los logs pueden ayudar.

    En su código, IVfoto es un Imageview u otro tipo de View, en caso contrario no podría utilizar
    Code:
    IVfoto.Bitmap=LoadBitmap(...)
     
    TheFalcon likes this.
  7. bgsoft

    bgsoft Well-Known Member Licensed User

    Hola

    Si, tienes razón, ademas solo hay que leer al principio del post de el que pone:
    :rolleyes:

    Bueno, ya dirá algo y saldremos de dudas, eso si, mañana me voy de vacaciones :D asi que si no lo hace mañana ya hasta la semana que viene

    Saludos
     
    TheFalcon likes this.
  8. TheFalcon

    TheFalcon Active Member Licensed User

    A vuestros comentarios, No no me da ningún error simplemente no añade la imagen que selecciono pero no siempre, cuando escojo una imagen y no se añade, el ImageView se me queda en blanco total.
    E intentado probar lo que me comentas de InitializeSample pero me dice "" Error description: Unknown member: initializesample "" no se si sera alguna librería que no estoy utilizando o alguna variable no declarada.

    Si la imagen la capturo desde la cámara a veces también me hace lo mismo pero si le doy a atrás y vuelvo a entrar en el Activity me aparece la captura que hice en el imageview

    Muchas gracias
     
  9. JordiCP

    JordiCP Well-Known Member Licensed User

    Sólo por descartar, añade el invalidate después de hacer el Loadbitmap. Si no, hace pinta a lo que apuntaba Jesús.

    Code:
    IVFoto.Bitmap=LoadBitmap(Dir,FileName)
    IVfoto.invalidate     
    '<---- esto
     
    TheFalcon likes this.
  10. bgsoft

    bgsoft Well-Known Member Licensed User

    Hola

    Cuando te de un error de ese tipo (Unknown member:) , quiere decir que has puesto una propiedad que no existe en ese objeto, como es este caso. Un ImageView no tiene esta propiedad, la tiene un Bitmap, asi que tendrás que hacer esto:

    Code:
    IVfoto.Bitmap = LoadBitmapSample(Dir,FileName,10%x,10%y)

    Está claro que es el mismo problema que me pasaba a mi, no da ningún tipo de error, la imagen no aparece y a veces si. Prueba lo de arriba, pero antes borra la memoria RAM (borrar los procesos inactivos y los que esten en segundo plano) y luego prueba de cargar esa imagen con ese tanto por ciento bajo, si se carga, ya veras que el problema era ese, y entonces empieza a subir ese valor hasta que veas bien la imagen en el dispositivo o te vuelva a ocurrir. Pero tambien seria interesante que una vez no utilizaras la imagen buscaras un metodo para descargarla.


    Saludos
     
    Last edited: Apr 1, 2015
    TheFalcon likes this.
  11. TheFalcon

    TheFalcon Active Member Licensed User

    Solucionado.
    Probé como me dijo Jordi.
    Code:
    IVFoto.Bitmap=LoadBitmap(Dir,FileName)
    IVfoto.invalidate     
    '<---- esto
    pero así me seguía igual, pero con lo ultimo que has comentado Bgsoft
    Code:
    IVfoto.Bitmap = LoadBitmapSample(Dir,FileName,10%x,10%y)
    Me funciona a la perfección y no me falla. Muchísimas gracias a los 2. Esto va a los Apuntes para que no me vuelva a pasar :p.
    Gracias
     
    Heppy and JordiCP like this.
  12. bgsoft

    bgsoft Well-Known Member Licensed User

    Hola

    Me alegro que lo consiguieras, es algo muy tipico de Android ese tipo de fallo, supongo que abras ido aumentando el % hasta que te volviera a pasar, aunque a veces no lo hace. Pero es interesante tambien que descargues la imagen cuando no la uses, asi si vuelves a entrar no se repetiria el problema, aunque con el tipo de carga ese no suele dar mas problemas.

    Feliz Semana Santa

    Saludos
     
    Heppy and JordiCP like this.
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice