Foros del Web » Programando para Internet » Android »

OutofMemory BitmapFactory.decodeFile

Estas en el tema de OutofMemory BitmapFactory.decodeFile en el foro de Android en Foros del Web. Estoy haciendo una aplicación para mostrar una galeria de imagenes en pantalla. El problema es que dependiendo de que directorio cargue la aplicación cuando crea ...
  #1 (permalink)  
Antiguo 07/10/2011, 01:15
 
Fecha de Ingreso: septiembre-2003
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 0
OutofMemory BitmapFactory.decodeFile

Estoy haciendo una aplicación para mostrar una galeria de imagenes en pantalla.
El problema es que dependiendo de que directorio cargue la aplicación cuando crea el bitmap que luego utilizo me dá error : OutofMemory...
He puesto de todo para que libere la memoria pero aun así me dá el error...
Alguien puede ayudarme ?


Código PHP:
public class CatalogoActivity extends Activity {
    
/** Called when the activity is first created. */
    
@Override       
    
public void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        
setContentView(R.layout.main);
 
        
String icon1;
        
int resID1;
 
 
        
Bitmap levelBitmap null;
 
 
       
//////////////////////////////////////////////////////////////////////////////////////////////
        
String ruta;
        
String state Environment.getExternalStorageState();
        
File file = new File(Environment.getExternalStorageDirectory(),"EMPRESAS/IMAGENES/test/");
        
File[] files file.listFiles();  
        
int itmp;
        
itmp=0;
        final 
String[] nombreImgArray = new String[files.length]; 
        
Bitmap[] mBitArray = new Bitmap[files.length]; 
 
        
///// ordenar files /////////
        
Arrays.sort(files);
 
 
 
        for(
int i=0files.lengthi++)  {
            
File fileTmp files[i];
 
            if(
fileTmp.isDirectory()!= true){
                
ruta fileTmp.getPath();
 
 
                
BitmapFactory.Options options=new BitmapFactory.Options(); 
                
options.inDensity =1;
                
options.inJustDecodeBounds true;
                
options.inSampleSize 3
                
byte[] byteArrayForBitmap = new byte[1024*1024];//new byte[48*1024];
                
options.inTempStorage byteArrayForBitmap;
                
options.inJustDecodeBounds false;
 
 
                
levelBitmap BitmapFactory.decodeFile(ruta,options);
 
                
mBitArray[itmp] = levelBitmap;
                
nombreImgArray[itmp] = fileTmp.getName();
                
itmp itmp +1;                 
 
 
            }
 
        }
        } 
__________________
---Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un esfuerzo total es una victoria completa.-- GHANDI
  #2 (permalink)  
Antiguo 07/10/2011, 06:03
Avatar de zero_master  
Fecha de Ingreso: junio-2011
Ubicación: Leon, Gto
Mensajes: 290
Antigüedad: 12 años, 10 meses
Puntos: 74
Respuesta: OutofMemory BitmapFactory.decodeFile

Yo lo hice de otro modo cargo en una variable mis ID's de las fotos que voy a mostrar

Código Javascript:
Ver original
  1. int[] ID={   R.drawable.rv_crlve1,
  2.                     R.drawable.rv_crlve2,
  3.                     R.drawable.rv_crlve3,
  4.                     R.drawable.rv_crlve4,
  5.                     R.drawable.rv_crlve1,
  6.                     R.drawable.rv_crlve2,
  7.                     R.drawable.rv_crlve3,
  8.                     R.drawable.rv_crlve4,
  9.                     R.drawable.rv_crlve1};
Despues para mostrarlo utilizo un simple contador ascendente con un reset dependiendo del tamaño de mi variable.

Código Javascript:
Ver original
  1. num = num + 1;
  2.                 if(num>8)
  3.                     num=0;
  4.                 imag.setImageResource(pic[num]);
Y con eso voy refrescando cada vez que haga click ya sea en un boton o en la misma imagen segun como tu puedas programarlo.
  #3 (permalink)  
Antiguo 10/10/2011, 04:55
 
Fecha de Ingreso: septiembre-2003
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: OutofMemory BitmapFactory.decodeFile

Hola zero_master, gracias por la respuesta, pero esa solución no me sirve...
las imagenes las leo desde una SDCARD y van a ser dinámicas ...
Tu solución seria en el caso de que estuviesen embebidas en el propio programa, es decir, saber las imagenes a priori cosa que no lo voy a saber...


Alguin conoce alguna otra propuesta?... Todo lo que he buscado por internet de momento no me ha funcionado
__________________
---Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un esfuerzo total es una victoria completa.-- GHANDI

Etiquetas: imagenes, todo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:25.