Gostaria de fazer um bot para comparar uma imagem (25x25 quase do tamanho de um icon) com uma aplicacao em 1280x720, explicando melhor…
quero que minha aplicacao java rode toda aquela janela em especifico a procura do pixel igual a imagem 25x25, serei mais especifico ainda kk :
Tenho uma imagem repleta de arvores 1280x720 e tenho uma imagem 25x25 de uma laranja, entao meu bot vai percorrer toda a imagem das arvores procurando pela laranja que encaixa exatamente nos pixels que eu dei pra aplicacao.
me disseram pra usar robot class mas nao consigo achar um video explicando como fazer isso, alguem indica algo melhor pra eu estar estudando ou ate mesmo um video que ensine isso?
Obs* de preferencia que a aplicacao nao percorra todo o monitor e sim apenas a aplicacao que eu setar, assim reduz tempo.
Você vai usar o Robot somente para tirar o “print screen” da tela.
O restante são algoritmos de processamento de imagens.
20cortar
nao irei usar o robot pra apertar as teclas e tals? acabei de perceber que nao especifiquei isso no topico mil perdoes kkk
mas se o pixel da tela for igual ao pixel 25x25 a aplicacao vai apertar W .
enfim… poderia citar alguma biblioteca ou nomes específicos desses algoritmos pra que eu possa ta estudando?
20cortar
publicclassLostArkOnlineextendsThread{publicRectanglerect;publicLostArkOnline(intx,inty,intwidth,intheight){rect=newRectangle(x,y,width,height);}publicvoidrun(){try{Robotrobot=newRobot();robot.delay(1500);//BufferedImage image = robot.createScreenCapture(rect);//ImageIO.write(image, "png", new File("./image/screen.png")); while(true){BufferedImageimg=robot.createScreenCapture(rect);//tira print da telaWritableRasterr=img.getRaster();DataBufferdb=r.getDataBuffer();DataBufferIntdbi=(DataBufferInt)db;int[]data=dbi.getData();for(intx_scale=0;x_scale<rect.width;x_scale+=30){//Roda toda a tela aumentando a escala.for(inty_scale=0;y_scale<rect.height;y_scale+=30){intrgb=data[x_scale+rect.width*y_scale];if(rgb==-806825||rgb==-1200035||rgb==-1924268||rgb==-81302||rgb==-2914754||rgb==-1065885||rgb==-8362958||rgb==-1193865){// se a cor do pixel for igual as listadas, faça://robot.mouseMove(rect.x + x_scale, rect.y + y_scale);robot.keyPress(KeyEvent.VK_X);//Aperta Xrobot.keyRelease(KeyEvent.VK_X);JOptionPane.showMessageDialog(null,"Pixel Encontrado","-----",JOptionPane.INFORMATION_MESSAGE);//Exibe a mensagem}}}}}catch(AWTExceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args){newLostArkOnline(0,0,1920,1080).start();}
}
Estou desenvolvendo esse codigo para um jogo a fim de treinar algumas habilidades usando algo que gosto para incentivo(o jogo) mas dentro do jogo ele nao esta apertando a tecla X, fora do jogo na aplicacao ele aperta, o que pode ser?