J'ai besoin de charger beaucoup de grandes images (500 fichiers .png) de la carte SD à mon application. Dois-je toujours convertir les images en Bitmap et créer des fichiers Bitmap? Je ne veux pas redimensionner le tas. Existe-t-il un autre moyen de lire les images à partir d'une carte SD?Android charger de grandes images à partir du stockage externe
Répondre
La représentation interne de l'image dans votre application est une collection de bits et d'octets - pas une image de format spécifique (png, bmp, etc.).
L'image est convertie en cette représentation interne lorsque l'image est chargée par BitmapFactory.
Il est généralement pas une bonne idée de charger tous les bitmaps à la fois, vous courrez rapidement de la mémoire ...
Si vous les afficher dans une vue, alors vous devez les charger dans mémoire dans leur intégralité. Vous n'avez pas mentionné la taille de vos images, mais ce que nous faisons dans notre galerie de photos, c'est de garder une liste de SoftReference
à ces bitmaps, afin que le garbage collector puisse les jeter quand ils ne sont pas visible (c'est-à-dire lorsque la vue qui les affiche est défaussée - assurez-vous que cela se produit réellement, par exemple en utilisant AdapterView
). Combinez cela avec le chargement paresseux de ces bitmaps et vous devriez être bon.
En fait, ils ne sont pas si gros. Peut-être au total 5 MB. Mais j'ai un viewflipper avec imageviews (et d'autres widgets) dans cela. Donc, je ne peux pas utiliser Gallery. – Maria
ne sait pas comment 'ViewFlipper' fonctionne en interne, mais s'il ne garde pas de fortes références à l'image' Drawable's c'est "flipping", alors ça devrait aller. – Matthias
Si la dimension de votre image est très grande, vous devez la redimensionner avant de la charger dans ImageView. Sinon, même une image peut facilement causer un problème de mémoire. Je ne sais pas combien d'images vous voulez afficher simultanément et quelle est leur taille. Mais je vous suggère de les redimensionner avant de les afficher.
Pour redimensionner l'image et le montrer, vous pouvez utiliser ce code:
BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
bitmapOptions.inJustDecodeBounds = true;
BitmapFactory.decodeStream(fileInputStream, null, bitmapOptions);
//reduce the image size
int imageWidth = bitmapOptions.outWidth;
int imageHeight = bitmapOptions.outHeight;
int scale = 1;
while (imageWidth/scale >= screenWidth && imageHeight/scale >= screenHeight) {
imageWidth = imageWidth/2;
imageHeight = imageHeight/2;
scale = scale * 2;
}
//decode the image with necessary size
fileInputStream = new FileInputStream(cacheFile);
bitmapOptions.inSampleSize = scale;
bitmapOptions.inJustDecodeBounds = false;
imageBitmap = BitmapFactory.decodeStream(fileInputStream, null, bitmapOptions);
ImageView imageView = (ImageView)this.findViewById(R.id.preview);
imageView.setImageBitmap(imageBitmap);
Dans mon projet android, j'utilise ce morceau de code pour redimensionner mon fond d'écran HD à examiner.
- 1. Galerie Android et grandes images
- 2. Configurations Android et grandes images
- 3. erreur de stockage externe Android
- 4. Android: Charger des activités à partir de dex externe
- 5. comment charger les images de galerie à partir d'arraylist android
- 6. Comment ouvrir .gif fichier en tant que InputStream à partir du stockage externe sur android
- 7. Charger js à partir du site externe à la volée
- 8. Android: WebView n'échelle pas de grandes images
- 9. Stockage interne et externe Android
- 10. UIL: l'image de charge du stockage externe
- 11. Android Charger l'image à partir du dessin
- 12. Lecture de grandes images à partir de HDFS dans mapreduce
- 13. WPF: Comment charger beaucoup de grandes images rapidement dans wrappanel?
- 14. Charger swf externe à partir du lien [As3]
- 15. Stockage de grandes tables de données statiques dans Android
- 16. Impossible de lire à partir du stockage externe à l'aide de NDK
- 17. Structure de chemin de stockage externe Android
- 18. Détection automatique du stockage de masse/lecteur externe sous Android
- 19. Comment analyser ou lire le fichier json à partir du stockage externe sur l'application Android
- 20. comment charger des images à partir du serveur local et externe et charger dans le webview dans iphone sdk?
- 21. Android: Fit dans trois grandes images
- 22. images Stockage dans SQLite Android
- 23. Comment charger plusieurs grandes images et vidéos dans Actionscript 3.0?
- 24. Création de grandes images
- 25. Stockage Android efficace de deux images similaires
- 26. Grandes images avec Direct2D
- 27. Android: Comment supprimer les fichiers du stockage externe?
- 28. charger des images à partir d'un dossier
- 29. logcat lors de l'utilisation du stockage externe
- 30. Android: Accès à ContentProvider à partir du service externe
Merci beaucoup pour la réponse. vous avez absolument raison, mais je devrais charger toutes les images à la fois, à cause des exigences. – Maria