2011-01-10 7 views
5

Ich entwickle gerade meine erste Android App und habe einige Probleme beim Rendern von Bildern. Das Bild selbst ist von Anfang an von großer Qualität, aber bei der Wiedergabe nimmt die Qualität drastisch ab. Kanten werden zackig und es sieht einfach schlecht aus. Jeder, dem ich es bis jetzt gezeigt habe, hat es fast sofort bemerkt, ohne irgendeine Aufforderung dazu. [Links, Ende auf der rechten Seite beginnen:]Gezackte Ränder auf Bildern gerendert in Android

http://i.stack.imgur.com/gld5A.png

ich alles versuche ich bin mir bewusst, und jeder Tipp, den ich in der Lage bin, indem Sie um online, aber nichts zu finden scheint es zu beheben.

Derzeit bekomme ich das Bild als Bitmap und skalieren:

Bitmap holeImage = BitmapFactory.decodeResource(res, R.drawable.hole_image); 
Bitmap holeImageBMP = Bitmap.createScaledBitmap(holeImage, width, height, true); 

Nachdem ich das Bild haben, erstelle ich eine Farbe, setzen einige Glättung auf true Attribute und es dann auf der Leinwand ziehen :

Wie Sie oben sehen können, nimmt die Bildqualität drastisch ab. Ich habe viele Bilder gesehen, die wunderschön wiedergegeben wurden, und ich bin ehrlich gesagt nicht sicher, was vor sich geht, also wäre jeder Ratschlag großartig!

Weitere Hinweise: Ich verwende eine SurfaceView-Methode für die Zeichnung, ähnlich wie im LunarLander-Beispiel im SDK.

Danke nochmal!

Antwort

0

Wenn Sie nicht auf viel weniger Farben beschränkt sind als das Originalbild hat (Hat Android 256 Farbmodi?), Würde ich empfehlen, dithering zu deaktivieren, wenn Sie in Ihr Bild zoomen, hat es einen sichtbaren Effekt das vielleicht ein glattes Aussehen zerstört.

Ich denke in Ihrem Fall, dithering infers mit Anti-Aliasing durch die Zerstörung der zusätzlichen Farben, die Anti-Aliasing für ein glattes Aussehen braucht. Eine schnelle Farbzählung auf Ihren Bildern (links etwa 850, rechts etwa 140) bestätigt dies.

+0

Ich habe es ausprobiert und es machte keinen Unterschied. Ich gebe zu, der einzige Grund, warum es da ist, ist, weil jemand in einem anderen stackoverflow.com Thread es vorgeschlagen hat: P Ich weiß den Gedanken zu schätzen! Wirklich jede Idee ist hilfreich. –

+0

OK, ich denke Pedros Antwort ist in diesem Fall hilfreicher. Ich habe noch nichts mit Android gemacht, also wusste ich nicht, dass es Dithering/Banding-Probleme gibt und gab nur eine Antwort auf Grafiken im Allgemeinen. – schnaader

+0

Fair genug. Danke nochmal! : D –

1

Das hängt wahrscheinlich damit zusammen, Bilder von einem Format in ein anderes zu konvertieren. Auch Android-Bildschirme variieren von Gerät zu Gerät. Versuchen Sie ein anderes Gerät zu verwenden und es könnte besser aussehen ... Fast sicher wird es einen anderen Ton haben.

Versuchen Sie, diese großen Artikel über dieses Problem (und Banding und Dithering) zu lesen und prüfen, um das Bild anzupassen Sie dafür geschaffen besser in Android-Geräten zu arbeiten: http://www.curious-creature.org/2010/12/08/bitmap-quality-banding-and-dithering/

+0

Danke für den Hinweis! Ich habe es auf verschiedenen Geräten ausprobiert (hauptsächlich Incredible und Droid X, obwohl das Bild oben vom Emulator stammt) und es ist auf der ganzen Linie ziemlich konsistent. Ich frage mich, ob die Dateien stattdessen als Bitmap anstelle von PNG gespeichert werden? Und ich werde diesen Artikel lesen - es sieht vielversprechend aus. Vielen Dank! –