Galera, não sabia se abria o tópico aqui ou na outra sessão de “Interface Gráfica” na dúvida abri aqui mesmo. Vamos ao problema, eu tenho uma imagem em preto e branco, pra ser mais preciso uma imagem com 4 impressões digitais juntas(o equipamento pega 4 dedos de uma vez) e preciso “cortar” essa imagem em 4 imagens diferentes, uma pra cada dedo. Vamos a minha idéia, primeiro pensei em varrer só uma parte da imagem, sei la uns 100 pixels da esquerda pra direita até o topo(na altura) e pegar os pontos pretos por num polígono e desenhar em outra imagem(à priori só um fundo branco). Isso seria feito, obviamente, 4 vezes, uma vez pra cada dedo. O problema de extrair os pontos pretos e criar o polígono tá resolvido, o problema é desenhar esse polígono em outra imagem(outro arquivo). Eis o código:
try {
BufferedImage image = ImageIO.read(new File("C:\\Users\\Hed\\Desktop\\impressao-digital.jpg"));
BufferedImage imagem = ImageIO.read(new File("C:\\Users\\Hed\\Desktop\\telaBranca.png"));
List<Point> pontos = new Vector<Point>(); //pontos pretos
for(int i=0;i<image.getWidth();i++){
for(int j=0;j<image.getHeight();j++){
Color cor = new Color(image.getRGB(i,j));
int red = cor.getRed(); // jeito dummy de se fazer
int blue = cor.getBlue(); // jeito dummy de se fazer
int green = cor.getGreen(); // jeito dummy de se fazer
if(red==0 && blue==0 && green==0){ // jeito dummy de se fazer
pontos.add(new Point(i,j));
}
}
}
int[] pontosEixoX = new int[pontos.size()];
int[] pontosEixoY = new int[pontos.size()];
for(int i=0;i<pontos.size();i++){
pontosEixoX[i] = pontos.get(i).x;
pontosEixoY[i] = pontos.get(i).y;
}
Polygon poligono = new Polygon(pontosEixoX,pontosEixoY,pontos.size());
Graphics2D g2d = imagem.createGraphics();
g2d.fillPolygon(poligono);
g2d.drawPolygon(poligono);
}
catch (IOException e) {
e.printStackTrace();
}
}
Valeu galeeeera! E peguem leve ai que eu to enferrujado em desktop. hehehee :lol:
PS: Eu sei que da pra dar uma otimizada no código, como eliminar essa lista de pontos, e quando o ponto na imagem for preto é só mandar a coordenada X pro vetor pontosEixoX e a coordenada Y pro vetor pontosEixoY, e assim dar uma boa otimizada. É que eu quis deixar mais claro o código.