Comment créer un Drawable à partir d'un flux sans redimensionnement?
Si j'ai le minimum cible SDK pour mon application est fixé à 4 alors tous les appels à Drawable.createFromStream de redimensionner les images.
par exemple, si l'image source est 480px de large et de l'appareil Android, mon application est en cours d'exécution sur a une densité de 1,5 ensuite le code suivant renvoie une BitmapDrawable avec une largeur de 320
URL url = new URL("http://www.examples.com/something.png");
Drawable d = Drawable.createFromStream(url.openStream(), "something.png");
Est-il une méthode pour le forcer à être à l'identique, ou spécifier l'échelle (ldpi/mdpi/hdpi etC) pour renvoyer une image à partir d'un InputStream?
Edit: la Solution ci-dessous.
Bitmap b = BitmapFactory.decodeStream(inputStream);
b.setDensity(Bitmap.DENSITY_NONE);
Drawable d = new BitmapDrawable(b);
OriginalL'auteur Johnny | 2011-09-09
Vous devez vous connecter pour publier un commentaire.
Vous pouvez charger une image au format Bitmap. De cette façon, sa taille sera inchangé.
Ou vous pouvez essayer
BitmapDrawable(InputStream is)
constructeur. C'est déconseillé, mais je suppose qu'il devrait faire le travail.BitmapDrawable()
méthode car elle va droit au but. C'est déconseillé, mais pas pour les API de niveau 4. L'idéal serait d'utiliserBitmapDrawable(Resource, InputStream)
, mais qui n'est pas disponible pour vous jusqu'à ce que l'API de niveau 5. Une autre option est de faire quelque chose commeBitmapDrawable(Resource, new BitmapFactory().decodeStream(InputStream))
qui est disponible à l'API de niveau 4 (mais pas moins).Cela fonctionne grâce. J'ai ajouté une modification de montrer comment convertir à BitmapDrawable.
OriginalL'auteur Dmitry Ryadnenko
De charger des images à partir de ressources locales dans ImageView Adaptateur
J'ai été coincé avec OOM erreur dans ion par Koushik Dutta, pour aussi peu que 2 images, le chargement de la ressource dossier. Même s'il a mentionné qu'il peut arriver, car ils ne sont pas des flux de données. et a suggéré de charger les InputStream.
Je chucked ion de la Bibliothèque car je voulais juste 4 images à partir de la section locale.
voici la solution avec de simples ImageView.
à l'intérieur de la RecyclerViewAdapter/ou n'importe où
Bien que Drawable d = new BitmapDrawable(b); est obsolète, mais fait le travail très bien.
donc, au lieu de cela, nous pouvons obtenir directement des drawable de InputStream juste par cette ligne..
Espère que cela aide.
OriginalL'auteur sud007
Après un long moment, je suis tombé sur la solution suivante. Elle fonctionne. Il récupère crée bitmap à partir d'un fichier au locallink.
OriginalL'auteur Dipendra