renotm Posté(e) 9 juin 2010 Share Posté(e) 9 juin 2010 Bonjour, Je développe actuellement une petite application afin de me former sous Android. Je viens du monde Java/J2EE donc je ne suis pas trop perdu. Je rencontre actuellement un petit soucis, je suis en train de créer qq filtres pour des images. Des choses toute simple, désaturation, sépia ... Lorsque je travaille sur les images native de l'appareil photo je suis régulièrement confronté à un problème de mémoire et l'application se ferme. (Utilisation supérieur a celle allouée à la VM me disent les logcat) pourtant à bien regarder mon code je ne vois pas en quoi ce dernier utilise de la mémoire. //code simplifié Bitmap bm = loadOriginalImage(); int width = bm.getWidth(); int height = bm.getHeight(); Bitmap newBm = Bitmap.createBitmap(width, height, bm.getConfig()); for (int i=0; i for (int j=0; j int p = bm.getPixel(i, j); int np = getNewColor(p); newBm.setPixel(i, j, np); } } Bon ok, ça fait une grosse boucle (pas loin de 5 millions d'itérations dans mon cas) mais je ne manipule que des petits int. En ajoutant un System.gc() tous les 50 000 itérations ça passe mais ce n'est pas très clean je trouve. je serais donc preneur de conseils pour permettre une meilleur utilisation de la mémoire. D'avance je vous remercie Lien vers le commentaire Partager sur d’autres sites More sharing options...
Alocaly Posté(e) 9 juin 2010 Share Posté(e) 9 juin 2010 Il y a des chances que ton image soit trop grosse pour être manipulée en un seul coup. Une image décompressée, c'est assez gros, donc en manipuler deux d'un seul coup, ca le fait pas trop. La solution, c'est de travailler sur des bouts d'image... Emmanuel / Alocaly Ps : pour vérifier ca, commence par une petite image... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.