Extraer partes de una imagen

Iniciado por kur79, 17 Enero 2016, 17:10 PM

0 Miembros y 1 Visitante están viendo este tema.

kur79

Siento si el título no está demasiado bien explicado, pero no sabía como exponer la cuestión. He empezado a trabajar recientemente con la interfaz gráfica de java y hasta el momento he creado juegos sencillos como el pacman, arkanoid, etc. He tenido siempre una imagen para cada elemento y movimiento pero ahora quiero tratar con cosas un poco más complicatas, quiero tratar de simular el Mario Bros. Para sistemas de esta envergadura he visto que se suele tener una imagen que contiene las distintas sub-imágenes pero no comprendo cómo puedo recortarlas para añadírselas a un objeto. Ando un poco perdido y sinceramente, no se ni si se puede hacer esto en java o este método está pensado para otros lenguajes.

https://gyazo.com/3ae672000af3bc62726c2958cea70db2

0xFer

Hola, una pregunta ¿No sería mejor tener las imágenes en archivos separados? Lo que quieres hacer es que tu programa recorte las imágenes en tiempo de ejecución pero ¿no sería mejor para un juego hacerlo antes de que se esté ejecutando? A lo mejor no estoy entendiendo bien lo que quieres hacer, pero si es lo que pienso entonces yo los recortaría con algún programa como GIMP antes de hacer un código que haga lo mismo.
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

kur79

Por ponerte un ejemplo fácil, los pack de texturas de los videojuegos. 'Todas' los obejtos están en una imagen que imagino que lo recorta al incio del programa solamente 1 vez. Imagino que haré lo de recortarlo yo mismo y me quito de problemas xD

MNicolas

Hola,

Cuando estudiaba me hicieron de hacer un Pacman en una práctica. Tenía una imagen que contenía todos los fantasmas y los pacman. Usaba un array para guardar todas las posiciones de un fantasma (hacia arriba, abajo, derecha o izquierda). La segunda dimensión del array era porque había 2 fantasmas por cada posición que variaban ligeramente para hacer un efecto de movimiento.

Código:

Código ("java") [Seleccionar]


BufferedImage imagenesTroceadas = new BufferedImage[4][2];
for(int i = 0; i<imagenesTroceadas.length; i++)
{
for(int j = 0; j<imagenesTroceadas[i].length; j++)
{
imagenesTroceadas[i][j] = imagenes.getSubimage(j*32, i*32, 32, 32);
}
}





Nota 32 era el tamaño en píxeles de cada fantasmita.

Saludos.

.rn3w.


Uzumaki_Naruto

Crea un array de BufferedImage donde vas a guardar los resultados ( las partes de la imagen ). y usa el método getSubImage para hacer la división de la imagen tal como te muestra MNicolas, Saludos.