Bitmap hat schlechte Qualität nach dem Laden

  • Antworten:7
Maximilian O
  • Forum-Beiträge: 990

30.12.2012, 23:27:53 via App

Hey Leute,
ich habe hier ein extrem nerviges Problem.

In einem Spiel male ich den Hintergrund mit canvas.drawBitmap(...) auf mein Canvas.
Die Hintergrundbitmap lade ich dafür mit
1BitmapFactory.decodeResource(getResources(), R.drawable.background, options);
Wenn ich diese Bitmap nun zeichne sind Verläufe unschön abgestuft (wenn ich das Bild direkt in eine ImageView lege wird sie perfekt dargestellt).

Woran kann das nur liegen?

Liebe Grüße Maximilian

— geändert am 31.12.2012, 12:08:58

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
Maximilian O
  • Forum-Beiträge: 990

31.12.2012, 12:48:10 via Website

Hey Phil,
danke für deine Antwort. Ich habe gefühlt schon tausend verschiedene Bitmap Config Einstellungen durch, es endet jedoch immer in so etwas:


Links ist ein Screenshot von meinem Telefon, rechts das Originalbild, welches mir mein Handy auch so (zB in Alben) anzeigen kann.
Mit diesem Code lade ich die Bitmap aus den drawable Ordner:
1BitmapFactory.Options options = new BitmapFactory.Options();
2options.inPreferredConfig = Bitmap.Config.ARGB_8888;
3
4background1Bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.background, options);

Hättest du eine Idee was ich in den options noch umstellen könnte?

Lg Maximilian

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
Phil G.
  • Forum-Beiträge: 86

31.12.2012, 13:25:10 via Website

Das was du zeigst ist die Sache zum Laden. Du sprachst davon, das du die Grafik auf einen Canvas zeichnest. Wie erschaffst du diesen Canvas ??? Dort muss natürlich auch die höchste qualität eingestellt sein, sonst dithered er so wie in deinem linken Bild.

Antworten
Maximilian O
  • Forum-Beiträge: 990

31.12.2012, 14:15:37 via Website

Leute... ihr seid die besten :D

Diese eine Zeile hat geholfen:
1holder.setFormat(PixelFormat.RGBA_8888);

Perfekt, endlich klappt das. Vielen vielen Dank!

Liebe Grüße und einen guten Rutsch,
Maximilian

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
Maximilian O
  • Forum-Beiträge: 990

01.01.2013, 17:51:52 via Website

Hey,
frohes neues Jahr :)

Die Lösung klappt auf meinem Telefon (HTC Sensation) super. Leider zeigt es aber auf einem HTC Desire HD keine Wirkung.
Wenn ich nichts am Pixelformat umstelle, sondern nur dem Paint für die Bitmap mit setDither(true) das Dithering aktivere funktioniert es auch wunderbar auf meinem Sensation, aber auch keine Wirkung aug dem Desire HD.
Hat jemand von euch eine Ahnung an was das liegen könnte?

Lg Maximilian

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
Maximilian O
  • Forum-Beiträge: 990

02.01.2013, 12:18:09 via Website

Hey Leute,
ich habe jetzt noch ein HTC Sensation zum Testen bekommen, welches noch mit Android 2.3 läuft, genau wie das Desire HD, bei beiden tritt der Streifeneffekt auf.
Auf meinem Sensation mit 4.0 ist er perfekt. In dem Link von Florian beschreibt Romain Guy ja was sich in 2.3 geändert, hat gibt es da aber vielleicht noch etwas?

Derzeit nutze ich diese 2 Zeilen:
1holder.setFormat(PixelFormat.RGBA_8888);
2paint.setDither(true);

Liebe Grüße Maximilian

— geändert am 02.01.2013, 12:18:20

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten