Test

Test


import java.awt.Color;

import java.awt.image.BufferedImage;


public class DividirImagen {


//private BufferedImage imageActual;

public int[][] matriz;


  public static BufferedImage recortar(BufferedImage img, int cuadrante) throws Exception{

// _________

// | 0 | 1 |

// |____|____|

// | 3 | 2 |

// |____|____|

//

int w = img.getWidth(), h = img.getHeight();

BufferedImage recorte;

switch (cuadrante) {

case 0:recorte=img.getSubimage(0, 0, w/2, h/2);

break;


case 1:recorte=img.getSubimage(w/2, 0, w/2, h/2);

break;

case 3:recorte=img.getSubimage(0, h/2, w/2, h/2);

break;

case 2:recorte=img.getSubimage(w/2, h/2, w/2, h/2);

break;

default:

throw new Exception("Error con cuadrante");

}

return recorte;

}

public static int validarColor(BufferedImage img, int x, int y) {

Color color;

color = new Color(img.getRGB(x, y));

int r = color.getRed();

int g = color.getGreen();

int b = color.getBlue();


if (r == 255 && g == 255 && b == 255) {

// el pixel es blanco

return 1;

}

// El pixel es negro

return 0;

}


  public static QuadTree ArmarA(BufferedImage img) throws Exception{

Integer c = -1;

QuadNodo r;

if(img.getHeight() == 2 && img.getWidth()==2){

//Se crean 4 hojas con su respectivo color

QuadNodo c0 = new QuadNodo(validarColor(img,0,0));

QuadNodo c1 = new QuadNodo(validarColor(img,1,0));

QuadNodo c2 = new QuadNodo(validarColor(img,1,1));

QuadNodo c3 = new QuadNodo(validarColor(img,0,1));

//Revisamos si los nodos son blancos

if(c2.getColor()==1 && c1.getColor()==1 && c0.getColor()==1 && c3.getColor()==1){

//El padre de los nodos es una hoja blanca

r = new QuadNodo(1);

}else

if(c2.getColor()==0 && c1.getColor()==0 && c0.getColor()==0 && c3.getColor()==0){

//El padre de los nodos es hoja negra

r = new QuadNodo(0);

}

else{

//Si tiene hijos variados entonces se le setean al padre

r = new QuadNodo(c0, c1, c2, c3);

}

}else{

r = new QuadNodo(c);

r.setChildren(DI(recortar(img,0),r), DI(recortar(img,1),r), DI(recortar(img, 2),r), DI(recortar(img, 3),r));

}

QuadTree t = new QuadTree(r);

return t;

}

public static QuadNodo DI(BufferedImage img, QuadNodo p) throws Exception {


Integer c = -1;

if(img.getHeight() == 2 && img.getWidth()==2){

//Se crean 4 hojas con su respectivo color

QuadNodo c0 = new QuadNodo(validarColor(img,0,0));

QuadNodo c1 = new QuadNodo(validarColor(img,1,0));

QuadNodo c2 = new QuadNodo(validarColor(img,1,1));

QuadNodo c3 = new QuadNodo(validarColor(img,0,1));

//Revisamos si los nodos son blancos

if(c2.getColor()==1 && c1.getColor()==1 && c0.getColor()==1 && c3.getColor()==1){

//El padre de los nodos es una hoja blanca

p.setColor(1);

return null;

}else

if(c2.getColor()==0 && c1.getColor()==0 && c0.getColor()==0 && c3.getColor()==0){

//El padre de los nodos es hoja negra

p.setColor(0);

return null;

}

else{

//Si tiene hijos variados entonces se le setean

QuadNodo a = new QuadNodo(c);

a.setChildren(c0,c1,c2,c3);

return a;

}

}else{

QuadNodo aux = new QuadNodo(c);

aux.setChildren(DI(recortar(img,0),aux), DI(recortar(img,1),aux), DI(recortar(img, 2),aux), DI(recortar(img, 3),aux));

return aux;

}

}



Report Page