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
Esta función me ha sido de mucha ayuda. Sin embargo, consume bastantes recursos y el tiempo de ejecución se ve sensiblemente afectado. Si alguien indica alguna manera alternativa más liviana de conseguir el mismo resultado le estaría bastante agradecido.
Saludos.