2017-04-05 2 views
1

J'ai le même problème trouvé here et je ne sais pas si maintenant il existe une solution. J'ai une image Bitmap de 2592x1944 pixels et, lorsque j'exécute Bitmap.decodeFile (...) l'application se bloque, provoquant une exception OutOfmemory.Fichier de décodage Bitmap mémoire - Android

Est-ce que quelqu'un parmi vous sait comment le résoudre?

Merci beaucoup

Ci-dessous mon code:

for (int iFile = 0; iFile < files.length; iFile++) { 
    if (files[iFile].exists()) { 
     bitmap = BitmapFactory.decodeFile(files[iFile].getAbsolutePath()); 
     int[][][] rgb = Utils.getImageRgb(bitmap); 

     indexLastFile = iFile + 1; 
     images.put("M" + (iFile + 1), rgb); 
     } 
} 
+0

N'utilisez pas le décodage 'Bitmap' pour les gros fichiers. Je me souviens que le redimensionnement avec Bitmap était vraiment pénible à cause des problèmes de performance. 'OutOfmemory' est un des côtés sombres de cela –

+0

Merci beaucoup pour votre temps, mais que dois-je faire au lieu d'utiliser Bitmap.decodeFile()? –

+0

utilise 'imageloaders' à la place. Personnellement, je préfère Glide. – Wizard

Répondre

0

Vous devriez éviter de jouer avec bitmaps sinon vous devez faire face à des exceptions OutOfMemory.

bibliothèques d'images Essayez Picasso ou Glide pour éviter de problèmes de mémoire & meilleures performances.

Remplacer chemin avec le chemin de dossier local ou l'URL du serveur

Glide.with (context).load (path).asBitmap().into(imageView); 
+1

Comment cela aide-t-il? Soyez spécifique (Bitmap.Config, la taille cible, etc.) –

+0

Pouvez-vous poster votre code afin que je puisse le mettre à jour comme vous en avez besoin – Pehlaj

+0

@Pehlaj s'il vous plaît envoyer votre code comment décoder un fichier sans le mettre dans une image –

1

Si vous voulez vraiment le bitmap seul, essayez de charger l'image de manière efficace, vous devez redimensionner l'image avant de charger même l'image dans la mémoire RAM.

https://www.youtube.com/watch?v=12cB7gnL6po suivez cette série vidéo pour charger le bitmap efficacement.

+0

Aucun homme.Je ne veux pas mettre à l'échelle l'image parce que la mise à l'échelle est une moyenne de pixels et j'ai besoin de tous les pixels –

+0

Pouvez-vous expliquer pourquoi vous avez besoin de bitmap sans perte de pixels, afin que nous puissions vous fournir une meilleure solution? –

+0

Parce que je dois extraire la couleur RVB pour chaque pixel de l'image, donc si je redimensionne l'image, les pixels seront déplacés et je ne pourrai pas obtenir la même sortie, donc je dois maintenir les mêmes pixels –