android: qualité des images redimensionnées en cours d'exécution
Je veux montrer des images à l'aide drawBitmap() la méthode. Mais avant je veux la redimensionner selon les dimensions de l'écran. J'ai un problème avec la qualité de l'image. Vous pouvez voir les captures d'écran et code de test ci-dessous. Comment puis-je redimensionner les images dans l'exécution avec une bonne qualité?
Merci pour les solutions.
Image d'origine:
le texte d'alt http://dl.dropbox.com/u/709109/gradient.png
Résultat de la capture d'écran sur l'appareil:
le texte d'alt http://dl.dropbox.com/u/709109/device.png
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import java.io.IOException;
import java.io.InputStream;
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout container = (LinearLayout) findViewById(R.id.container);
container.addView(new View(this) {
@Override
protected void onDraw(Canvas canvas) {
Bitmap unscaledBitmap;
try {
InputStream in = getAssets().open("images/gradient.png");
unscaledBitmap = BitmapFactory.decodeStream(in);
in.close();
canvas.drawBitmap(unscaledBitmap, null, new Rect(0, 0, 320, 480), null);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
}
source d'informationauteur shinydev | 2010-01-11
Vous devez vous connecter pour publier un commentaire.
Veuillez vous référer à Romain réponse ci-dessous.
Je voudrais supprimer cette réponse, mais j'en suis incapable car il est marqué comme étant accepté.
Noter que Android [lorsque cette réponse a été écrit à l'origine, sans demande explicitement couleur de 32 bits] serait seulement de couleur 16 bits, donc il peut y avoir des moments où vous obtenez les artefacts indésirables.
Vous pouvez également essayer d'utiliser les options de tramage à dire Android pour appliquer automatiquement le tramage qui, tout n'est pas parfait, peut aider à rendre les choses un peu mieux.
Au lieu de redimensionnement au moment du dessin (qui va être très coûteux), essayer de redimensionner dans un bitmap hors écran et assurez-vous que l'image Bitmap est 32 bits (ARGB888).
Découvrez http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html (Pour être utilisé avec
unscaledBitmap = BitmapFactory.decodeStream(en);
Vous pouvez ajouter des paramètres de qualité de l'image. Je suppose que la qualité est dégradée que vous n'êtes pas la réussite de tous les paramètres de l'image doit être traitée.