2011-01-10 8 views
5

Attualmente sto sviluppando la mia prima app per Android e sto avendo qualche problema nel rendering delle immagini. L'immagine stessa è di grande qualità per cominciare, ma dopo averla resa la qualità si abbassa drasticamente. I bordi diventano frastagliati e sembra appena fatto male. Tutti quelli che ho mostrato fino ad ora l'hanno quasi immediatamente notato, senza alcun suggerimento a riguardo. [Start sulla sinistra, all'estremità a destra:]Bordi frastagliati su immagini renderizzate in Android

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

sto cercando tutto ciò che sono a conoscenza e ogni suggerimento sono stato in grado di trovare, cercando intorno in linea, ma niente sembra risolvere il problema.

Attualmente, ottengo l'immagine come bitmap e la scala è:

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

Una volta che ho l'immagine, ho creare una vernice, che dista poche smoothing attribuisce al vero, e quindi disegnare sulla tela :

Paint smoothingPaint = new Paint(); 
smoothingPaint.setAntiAlias(true); 
smoothingPaint.setFilterBitmap(true); 
smoothingPaint.setDither(true); 
canvas.drawBitmap(holeImageBMP, 0, 0, smoothingPaint); 

Tuttavia, come si può ovviamente vedere sopra, la qualità dell'immagine diminuisce drasticamente. Ho visto molte immagini renderizzate in modo bello e onestamente non sono sicuro di cosa sta succedendo, quindi ogni consiglio sarebbe fantastico!

Altre note: sto utilizzando un metodo SurfaceView per gestire il disegno, simile in natura all'esempio LunarLander fornito nell'SDK.

Grazie ancora!

risposta

0

Se non si dispone di un numero di colori inferiore a quello dell'immagine originale (Android dispone di 256 modalità colore?), Suggerisco di disabilitare dithering, se si ingrandisce l'immagine, ha un effetto visibile che forse distrugge un aspetto liscio.

Penso che nel tuo caso, il dithering si traduca con l'anti-aliasing distruggendo i colori aggiuntivi necessari per l'anti-aliasing per un aspetto uniforme. Un rapido conteggio dei colori delle tue foto (a sinistra circa 850, a destra circa 140) lo conferma.

+0

ho provato e non faceva nessuna differenza. Devo ammettere che l'unica ragione per cui è presente è che qualcuno in un altro thread di stackoverflow.com l'ha suggerito: P Apprezzo il pensiero, però! Davvero ogni idea è utile. –

+0

OK, penso che la risposta di Pedro sia più utile in questo caso. Non ho ancora fatto nulla con Android, quindi non sapevo che ci fossero problemi di dithering/banding e ho appena dato una risposta relativa alla grafica in generale. – schnaader

+0

Abbastanza giusto. Grazie ancora allora! : D –

1

Ciò è probabilmente correlato alla conversione di immagini da un formato all'altro. Inoltre, gli schermi Android variano da dispositivo a dispositivo. Prova ad usare un altro dispositivo e potrebbe sembrare migliore ... Quasi sicuramente avrà un tono diverso.

provate a leggere questo grande articolo su questo problema (e banding e dithering) e considerare adattando l'immagine che si è creato per farlo funzionare meglio nei dispositivi Android: http://www.curious-creature.org/2010/12/08/bitmap-quality-banding-and-dithering/

+0

Grazie per il consiglio! L'ho provato su diversi dispositivi (principalmente l'Incredible e Droid X, anche se l'immagine sopra è emulata) ed è piuttosto coerente su tutta la linea. Mi chiedo se salvare i file come bitmap invece di PNG, invece? E leggerò quell'articolo - sembra promettente. Grazie! –

Problemi correlati