M
Mr.Bross
Gast
Ich habe den screen jetzt mal als test in 10 Scheiben geteilt. Wenn sich bei einem etwas ändert, wird eine Scheibe verschickt. Das werde ich natürlich noch verbessern, indem ich kleinere Kacheln benutze (vielleicht wirklich 10x10).
Doch mit dieser Geschwindigkeit kann man es vergessen, da es schon alleine zum berechnen etwa 7 Sekunden benötigt. Hier ist mal der Client, bei dem ja alles aufgeteilt wird usw.
Doch mit dieser Geschwindigkeit kann man es vergessen, da es schon alleine zum berechnen etwa 7 Sekunden benötigt. Hier ist mal der Client, bei dem ja alles aufgeteilt wird usw.
Java:
import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.net.Socket;
import javax.imageio.ImageIO;
public class Client {
private BufferedImage imagebefore;
private boolean who[];
public static void main(String args[]) throws AWTException, IOException
{
new Client().los();
}
public void los() throws AWTException, IOException
{
Robot robot = new Robot();
Socket sock;
sock = new Socket("192.168.0.5", 5005);
Rectangle rect = new Rectangle();
rect.x = 0;
rect.y = 0;
rect.width = Toolkit.getDefaultToolkit().getScreenSize().width;
rect.height = Toolkit.getDefaultToolkit().getScreenSize().height;
ObjectOutputStream ob = new ObjectOutputStream(sock.getOutputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(sock
.getInputStream()));
int x = 0;
int y = 0;
imagebefore = robot.createScreenCapture(new Rectangle(rect));
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
who = new boolean[10];
while (!Thread.interrupted())
{
while (!reader.ready())
{
}
if (x == 20)
{
x = 0;
ob.reset();
}
String s = reader.readLine();
if (s.equals("-50"))
{
int before = (int) System.currentTimeMillis();
int pixel2[][] = new int[width][height];
for (int i = 0; i < 10; i++)
{
who[i] = false;
}
if (y > 0)
{
for (int xx = 0; xx < (width - 1); xx++)
{
for (int yy = 0; yy < (height - 1); yy++)
{
pixel2[xx][yy] = imagebefore.getRGB(xx, yy);
}
}
}
BufferedImage bi = robot.createScreenCapture(rect);
int pixel[][] = new int[width][height];
for (int xx = 0; xx < (width - 1); xx++)
{
for (int yy = 0; yy < (height - 1); yy++)
{
pixel[xx][yy] = bi.getRGB(xx, yy);
}
}
for (int xx = 0; xx < (width - 1); xx++)
{
for (int yy = 0; yy < (height - 1); yy++)
{
pixel[xx][yy] = bi.getRGB(xx, yy);
if (pixel[xx][yy] != pixel2[xx][yy])
{
if (xx < Toolkit.getDefaultToolkit()
.getScreenSize().height / 10)
{
who[0] = true;
}
else
if (xx < Toolkit.getDefaultToolkit()
.getScreenSize().height / 9)
{
who[1] = true;
}
else
if (xx < Toolkit.getDefaultToolkit()
.getScreenSize().height / 8)
{
who[2] = true;
}
else
if (xx < Toolkit.getDefaultToolkit()
.getScreenSize().height / 7)
{
who[3] = true;
}
else
if (xx < Toolkit
.getDefaultToolkit()
.getScreenSize().height / 6)
{
who[4] = true;
}
else
if (xx < Toolkit
.getDefaultToolkit()
.getScreenSize().height / 5)
{
who[5] = true;
}
else
if (xx < Toolkit
.getDefaultToolkit()
.getScreenSize().height / 4)
{
who[6] = true;
}
else
if (xx < Toolkit
.getDefaultToolkit()
.getScreenSize().height / 3)
{
who[7] = true;
}
else
if (xx < Toolkit
.getDefaultToolkit()
.getScreenSize().height / 2)
{
who[8] = true;
}
else
if (xx < Toolkit
.getDefaultToolkit()
.getScreenSize().height)
{
who[9] = true;
}
else
{
}
}
}
}
System.out.println("after");
int is = 0;
for (int i = 0; i < 10; i++)
{
if (who[i] == true)
{
if (i == 0)
{
writer.println("0");
writer.flush();
bi = robot.createScreenCapture(new Rectangle(0, 0,
width / 10, height));
is = 1;
}
else
if (i == 1)
{
writer.println("1");
writer.flush();
bi = robot.createScreenCapture(new Rectangle(0,
0, width / 9, height));
is = 1;
}
else
if (i == 2)
{
writer.println("2");
writer.flush();
bi = robot
.createScreenCapture(new Rectangle(
0, 0, width / 8, height));
is = 1;
}
else
if (i == 3)
{
writer.println("3");
writer.flush();
bi = robot
.createScreenCapture(new Rectangle(
0, 0, width / 7, height));
is = 1;
}
else
if (i == 4)
{
writer.println("4");
writer.flush();
bi = robot
.createScreenCapture(new Rectangle(
0, 0, width / 6,
height));
is = 1;
}
else
if (i == 5)
{
writer.println("5");
writer.flush();
bi = robot
.createScreenCapture(new Rectangle(
0, 0,
width / 5,
height));
is = 1;
}
else
if (i == 6)
{
writer.println("6");
writer.flush();
bi = robot
.createScreenCapture(new Rectangle(
0, 0,
width / 4,
height));
is = 1;
}
else
if (i == 7)
{
writer.println("7");
writer.flush();
bi = robot
.createScreenCapture(new Rectangle(
0,
0,
width / 3,
height));
is = 1;
}
else
if (i == 8)
{
writer.println("8");
writer.flush();
bi = robot
.createScreenCapture(new Rectangle(
0,
0,
width / 2,
height));
is = 1;
}
else
if (i == 9)
{
writer
.println("9");
writer.flush();
bi = robot
.createScreenCapture(new Rectangle(
0,
0,
width,
height));
is = 1;
}
else
{
System.out
.println("nothing (2)");
}
}
}
if (is == 0)
{
writer.println("10");
writer.flush();
}
System.out.println("Time: "
+ ((int) System.currentTimeMillis() - before));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(bi, "png", baos);
byte b[] = baos.toByteArray();
ob.writeObject(b);
ob.flush();
y++;
}
x++;
}
}
}