2013-07-23 1 views
1

Il semble qu'il y ait quelques différentes façons d'obtenir une image bitmap à partir du stockage sur un téléphone.La meilleure façon de récupérer et redimensionne bitmap de stockage du téléphone

Je lis les données de toutes les images à l'aide d'une requête MediaStore et j'économiser le chemin et le imageId en mémoire. Puis plus tard si je veux télécharger une petite vignette de l'image, je peux:

1) interroger le médiastore pour un mini/mini type de vignette basé sur l'id de l'image, puis créer un bitmap mis à l'échelle de celui pour s'adapter à mon besoins exacts (si le micro/mini est pas la taille correcte)

Bitmap bm = MediaStore.Images.Thumbnails.getThumbnail(context.getContentResolver(),  imageId, MediaStore.Images.Thumbnails.MINI_KIND, null); 
Bitmap.createScaledBitmap(bm, (int)newWidth, (int)newHeight, true); 

ou

2) récupérer le bitmap à partir de l'emplacement du fichier, puis créer une image bitmap à l'échelle de ce

Bitmap bitmap = BitmapFactory.decodeFile(url); 
Bitmap.createScaledBitmap(bitmap, (int)newWidth, (int)newHeight, true); 

que je faisais à l'origine # 1 parce que je pensais que la génération des vignettes serait rapide de la Mediastore qui rendrait la finition des processus createScaledBitmap plus rapide plutôt que de créer une image bitmap à l'échelle de l'image pleine grandeur. Y a-t-il un meilleur moyen ou cette différence est-elle complètement négligeable?

Répondre

1

Je ne suis pas un expert, mais je pense que la différence entre les deux serait négligeable, étant donné que de toute façon que vous créez une image à l'échelle. Il semblerait que la seule différence serait le temps qu'il faudrait pour passer de la miniature à l'échelle de l'image bitmap, et de toute façon, je pense que vous parlez de nanosecondes. Honnêtement, il semblerait que vous voudriez utiliser # 1 simplement pour l'utilisation de la mémoire, plutôt que de charger à partir de l'image en taille réelle, puis l'échantillonnage vers le bas, vous le chargez à partir de la vignette et dimensionner si nécessaire.

+0

Oui exactement ce que je pensais. Je ne savais pas s'il y avait quelque chose qui me manquait qui ferait une différence. – pat

Questions connexes