implemented Multithreading
This commit is contained in:
@@ -7,6 +7,32 @@ import java.io.*;
|
||||
import java.net.*;
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
||||
class Worker extends Thread {
|
||||
Socket socket;
|
||||
String[] pixelArray;
|
||||
public Worker(String HOSTNAME, int PORT, String[] pixelArray) {
|
||||
try {
|
||||
this.socket = new Socket(HOSTNAME, PORT);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
this.pixelArray = pixelArray;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
while(true) {
|
||||
for(int i = 0; i < pixelArray.length; i++) {
|
||||
byte[] payload = pixelArray[i].getBytes();
|
||||
try {
|
||||
socket.getOutputStream().write(payload);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
class Main
|
||||
{
|
||||
private static BufferedImage processImage(String imageFile) {
|
||||
@@ -21,11 +47,11 @@ class Main
|
||||
return null;
|
||||
}
|
||||
|
||||
private static ArrayList<String> prepareArray(BufferedImage image, int xOffset, int yOffset) {
|
||||
ArrayList<String> pixelArray = new ArrayList<>();
|
||||
private static String[] prepareArray(BufferedImage image, int xOffset, int yOffset) {
|
||||
|
||||
int width = image.getWidth();
|
||||
int height = image.getHeight();
|
||||
ArrayList<String> pixelArray = new ArrayList<>();
|
||||
|
||||
// Iterate over each pixel
|
||||
for (int y = 0; y < height; y++) {
|
||||
@@ -35,22 +61,21 @@ class Main
|
||||
|
||||
// Extract individual color components
|
||||
int alpha = (pixel >> 24) & 0xFF;
|
||||
int red = (pixel >> 16) & 0xFF;
|
||||
int green = (pixel >> 8) & 0xFF;
|
||||
int blue = pixel & 0xFF;
|
||||
String rgbValue = String.format("%06X", (pixel & 0xFFFFFF));
|
||||
String messageParameters = String.format("PX %s %s %s\n", x+xOffset, y+yOffset, rgbValue);
|
||||
if(alpha != 0)
|
||||
{
|
||||
pixelArray.add(messageParameters);
|
||||
}
|
||||
}
|
||||
}
|
||||
String[] payloadArray = new String[pixelArray.size()];
|
||||
for(int i = 0; i < payloadArray.length; i++)
|
||||
{
|
||||
payloadArray[i] = pixelArray.get(i);
|
||||
}
|
||||
|
||||
// Print RGBA values
|
||||
System.out.println("Pixel at (" + x + ", " + y + "):");
|
||||
System.out.println(rgbValue);
|
||||
}
|
||||
}
|
||||
return pixelArray;
|
||||
return payloadArray;
|
||||
}
|
||||
|
||||
//Syntax blabla.jar x y Hostname Port Image.png
|
||||
@@ -63,20 +88,37 @@ class Main
|
||||
|
||||
// Read the PNG file
|
||||
BufferedImage image = processImage(imageName);
|
||||
ArrayList<String> pixelArray = prepareArray(image, xOffset, yOffset);
|
||||
String[] pixelArray = prepareArray(image, xOffset, yOffset);
|
||||
|
||||
try {
|
||||
Worker worker0 = new Worker(HOSTNAME, PORT, pixelArray);
|
||||
/*Worker worker1 = new Worker(HOSTNAME, PORT, pixelArray);
|
||||
Worker worker2 = new Worker(HOSTNAME, PORT, pixelArray);
|
||||
Worker worker3 = new Worker(HOSTNAME, PORT, pixelArray);
|
||||
Worker worker4 = new Worker(HOSTNAME, PORT, pixelArray);
|
||||
Worker worker5 = new Worker(HOSTNAME, PORT, pixelArray);
|
||||
Worker worker6 = new Worker(HOSTNAME, PORT, pixelArray);
|
||||
Worker worker7 = new Worker(HOSTNAME, PORT, pixelArray);*/
|
||||
|
||||
|
||||
worker0.start();
|
||||
/*worker1.start();
|
||||
worker2.start();
|
||||
worker3.start();
|
||||
worker4.start();
|
||||
worker5.start();
|
||||
worker6.start();
|
||||
worker7.start();*/
|
||||
|
||||
/*try {
|
||||
Socket socket = new Socket(HOSTNAME, PORT);
|
||||
//PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
|
||||
while(true) {
|
||||
for(int i = 0; i < pixelArray.size(); i++) {
|
||||
//out.println(pixelArray.get(i));
|
||||
byte[] payload = pixelArray.get(i).getBytes();
|
||||
for(int i = 0; i < pixelArray.length; i++) {
|
||||
byte[] payload = pixelArray[i].getBytes();
|
||||
socket.getOutputStream().write(payload);
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user