Reescalar una imagen con J2ME

25 11 2007

Un problema típico en la programación para móvil es el reescalado de imágenes. Si queremos programar una aplicación (o juego) que comprenda mas de un modelo nos encontraremos con varias pantallas (distindas resoluciones, tamaño, etc etc). Si bien podemos crear una imagen para cada dispositivo móvil compatible con lo que nosotros estamos programando esta solución es muy laboriosa….. Si bien hay veces que es la única solución (depende siempre de cada aplicación que hagamos) la mayoría de veces lo podemos solucionar reescalando las imágenes según la pantalla que tenemos. Os dejo con una función típica de reescalado de imágenes en J2ME, aunque con esta idea también podrias hacer algo con muchos lenguajes camiando algunas cosas… jejeje

protected Image ReescalaImagenOpaca(Image imagenOriginal, int anchoNuevo, int altoNuevo)

{

//Inicializaciones

int anchoOrigen = imagenOriginal.getWidth();

int altoOrigen = imagenOriginal.getHeight();

Image imagenFinal = Image.createImage(anchoNuevo, altoNuevo);

Graphics g = imagenFinal.getGraphics();

//Bucles que tratan el reescalado

for(int y=0; y<altoNuevo; y++)

{

for(int x=0; x<anchoNuevo; x++)

{

g.setClip(x, y, 1, 1);

int xAux = x * anchoOrigen / anchoNuevo;

int yAux = y * altoOrigen / altoNuevo;

g.drawImage(imagenOriginal, x-xAux, y-yAux, Graphics.LEFT | Graphics.TOP);

}

}

return Image.createImage(imagenFinal);

}

Como habreis visto algunos en el nombre de la función, ésta solo sirve para reescalar imágenes opacas, pues la función createImage de J2ME no permite transparencias. En otro artículo ya os explicaré como hacer el reescalado con imágenes transparentes (si bien la idea es parecida, cambia bastante y pierde mucho rendimiento debido a la escasa capacidad de cálculo de los procesadores móviles).

(Siento que no esté tabulada la función pero es que no se que pasa on el WordPress que me lo tabula mal….)

Saludos,

by Marc2c