Aller au contenu

bitmap size exceeds VM budget


pat

Recommended Posts

Salut à tous,

Je developpe une application de partage de photo et je fais face à un problème sur certains terminaux.

Lors de la prise de photo je fais apparaitre un thumbnail de celle ci dans une popupWindow à l'utilisateur pour savoir si elle lui convient ou si il veut en prendre une autre.

Tout ce passe bien sur N1, galaxy S, ou desire.

Mais certain utilisateurs d'appareil a petite résolution (samsung intercept) ou grande (desire HD) me rapporte ce 'bitmap size exceeds VM budget' qui empeche la popupWindow d'apparaitre.

Qq1 aurait il a première vue comme ca une piste?

Pour info le bitmap affiché fait 640x480 et est affiché dans une popup d'environ 400x 300 et dimensionné automatiquement via le layout fill_parent

Merci ;)

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

de la même facon, je réalise une application comportant plein d'image pour mon interface.

Et au bout d'un moment, j'ai eu ce fameux "... Bitmap Size exceeds VM budget"

sa fait maintenant 2 jour que je cherche a trouver une solution.

entre les Bitmap.recycle() , les Garbage Collector et tout ça, toujours pas de solution viable.

Je vais alors me résigner à réduire la qualité de l'interface pour ganger en espace mémoire.

@ plus

Lien vers le commentaire
Partager sur d’autres sites

  • 2 months later...

Je vais alors me résigner à réduire la qualité de l'interface pour gagner en espace mémoire.

Bonjour a tous, je reviens après quelque temps car je viens de trouver une parade pour éviter le dépassement mémoire:

Ce qu'il faut c'est surtout pas utiliser le fameux BitmapFatory.decodeResource.... car c'est lui qui consomme le VM budget ( on est limité en gros à une image de 5000*5000 px

Un exemple:

Je souhaitais copier une image depuis les ressources ( R.drawable.image) vers la mémoire du téléphone:

ma solution qui provoquait une OOM error :

Faire un BitmapFatory.decodeResource(R.drawable.image);

( on peux solutionner en réduisant la qualité par des trucs du genre options.insampleSize = 2.... mais réduire la qualité n'étais pas une options pour moi)

j'ai donc réalisé a la place un Input Stream:

mon code a la place du BitmapFactory :

x = this.getResources().openRawRessourceFd(R.drawable.image).createInputStream();

image = BimapFactory.decodeStream(x);

et la, bizarrement ça fonctionne niquel !!!!

pour résumer : il faut créer un Stream du fichier image !

me contacter pour plus d'infos, cela servira peut être à certains ;)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...