Question

Mon application Android charge les images, effectue certains traitements et enregistre les images traitées sur la carte SD. J'enregistre des fichiers temporaires sur la carte SD au lieu d'utiliser des tampons. Par exemple, lire un arrière-plan, faire défiler l'image, dessiner une annotation, fusionner un arrière-plan et une annotation dans un fichier temporaire enregistré pour l'utiliser comme arrière-plan suivant, etc. Extraits typiques:

bitmap= Bitmap.createBitmap (imageSizeX, imageSizeY, Bitmap.Config.ARGB_8888);

bitmap= BitmapFactory.decodeFile (chemin, options);

bitmap.compress (Bitmap.CompressFormat.JPEG, 100, sortie);

Tout fonctionne bien, mais dans certains cas, les images enregistrées ont ajouté un bruit similaire à celui décrit dans cet article: Redimensionnement et rotation du bitmap: bruit linéaire

L'auteur du post cité a résolu le problème par sous-échantillonnage, mais je ne souhaite pas le faire.

J'ai essayé les solutions suggérées ici: http:// www .curious-creature.org / 2010/12/08 / bitmap-quality-banding-and-dithering / # more-1218 qui, si je comprends bien, devrait être obtenu en définissant getWindow (). setFormat (PixelFormat.TRANSLUCENT); pour forcer 32 bits.

ce qui ne change pas grand-chose. La définition ou non de l'indicateur de tramage ne semble pas non plus changer beaucoup. D'autres idées?

Était-ce utile?

La solution

En réponse à ma propre question: Le bruit disparaît, ou du moins le résultat est bien meilleur, en compressant en .png au lieu de .jpg

bitmap.compress(Bitmap.CompressFormat.PNG, 100, output);

Le même ciel qui ressemble à une texture de tapis en .jpg semble lisse et propre en .png.Comme la différence est beaucoup plus évidente que la différence habituelle entre la même image compressée en .png et .jpg, je suppose que cela dépend de l'implémentation Android.Définir explicitement TRANSLUCENT et DITHER ne fait pas beaucoup de différence d'une manière ou d'une autre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top