![]() |
|
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
«
Tema Anterior
|
Siguiente tema
»
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Perdida calidad Bitmap
Buenas!
Tengo una serie de bitmap que voy reescalando con matrix.postScale, y la cuestión es que pierde bastante calidad, tanto si lo hago pequeño como si lo hago grande, hay alguna manera de que el bitmap siga teniendo la calidad que tenia antes de reescalarlo? Muchas gracias! |
|
|
|
#2
|
||||
|
||||
|
Siempre te va a perder calidad al redimensionar una imagen, sobre todo si luego quieres verla con el mismo tamaño que la imagen original.
Al hacerla más grande haces lo que se llama interpolado positivo, que lo que hace es inventarse puntos en la imagen, aproximados a los puntos que tiene alrededor. Esto SIEMPRE va a hacer que la imagen se vea peor. Al hacerla más pequeña haces interpolado negativo, lo que hace es quitar puntos de la imagen, su efecto no se nota siempre y cuando la imagen la veas al tamaño al que lo redujiste, si luego tratas de ampliarla y verla al tamaño de la imagen original, obviamente perderás calidad al haber quitado puntos de la imagen. Ejemplo del segundo caso: Tienes un móvil de 800x480 (HDPI Standard), y tienes una imagen de la misma resolución. A pantalla completa en el móvil la verás perfecta. Ahora coges y la reduces a a la mitad, 400x240. Siempre y cuando en el móvil la veas a esa resolución (ocupando sólo la zona central del móvil, y el resto bordes negros) la seguirás viendo bien, pero más pequeña, en cuanto la amplíes la verás mal. Ahora bien, si aún reduciéndola y manteniéndola viéndose pequeña la ves mal, entonces si puede ser que puedas mejorar la calidad. ¿Haces algo más a parte del createBitmap con la nueva matrix? |
|
#3
|
||||
|
||||
|
No creo de nuevo el bitmap, simpelemente creo una matriz y haog un drawBitmap con la nueva matriz asignada (Reescalada al valor que quiero)
Edito 1: ¿Los programas que hacen trato de imagenes, es decir que puedes ampliarlas con los dedos y girarlas, no pierden calidad o es que no se nota, o si no pierden calidad, sabes como lo hacen? |
|
#4
|
||||
|
||||
|
Asegurate de tener el antialiasing activado, que por defecto no lo está.
Al paint que le pases al drawBitmap tienes que hacerle antes un paint.setAntiAlias(true); |
|
#5
|
||||
|
||||
|
Tengo puesto el paint a null, lo correcto seria crearse un paint y hacerle un paint.setAntiAlias(true);
osea: Paint p = new Paint(); p.setAntiAlias(true); y de ahi ya llamar a canvas.draw(...,p)? |
|
#6
|
||||
|
||||
|
Yo tengo una subclase de ImageView que hace eso, y lo que hace es usar el setImageMatrix del ImageView.
|
|
#7
|
||||
|
||||
|
Sí, pero no lo crees cada vez que llames al draw, guarda el Paint como variable de clase para reutilizarlo siempre.
|
|
#8
|
||||
|
||||
|
Muchas gracias! voy a probarlo y te comento
|
|
#9
|
||||
|
||||
|
Buenas! ya probe lo de setAntiAlias(true) creandome un paint y pasandoselo al dibujar, pero se me ven con menos calidad que si le paso a null...alguno sabe una soluccion? o si lo he hecho mal?
Muchas gracias! |
|
#10
|
||||
|
||||
|
Disculpa, es lo que pasa cuando se dicen las cosas de memoria. Lo correcto es p.setFilterBitmap(true)
|
|
#11
|
||||
|
||||
|
Funciona a la perfeccion!
muchisimas gracias otra vez! eres un crack! |
| Respuesta |
Estás aquí
|
||||||
|
||||||
«
Tema Anterior
|
Siguiente tema
»
| Herramientas | |
|
|
Hora actual: 20:50:26 (GMT +1)
HTCMania: líderes desde el 2007






