貌似解码是个大问题 我用的是 ImageIO.write(....)将图片存入到了文件里面 将文件中信息打包发送出去
然后接收并存入另一个文件中 然后用 BufferedImage bi = ImageIO.read(....) 想把它转换回来 结果转不回来了
显示bi为null
求该如何解决这一个问题啊
附上源码
然后接收并存入另一个文件中 然后用 BufferedImage bi = ImageIO.read(....) 想把它转换回来 结果转不回来了
显示bi为null
求该如何解决这一个问题啊
附上源码
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;import javax.imageio.ImageIO;
import javax.imageio.stream.FileImageInputStream;
public class Server {
Robot r;
BufferedImage bi;
DatagramSocket ds;
DatagramPacket dp;
public Server() {
try {
ds = new DatagramSocket(8080);
r = new Robot();
} catch (AWTException e) {
e.printStackTrace();
} catch (SocketException e) {
e.printStackTrace();
}
new ServerThread().start();
}
public class ServerThread extends Thread {
public void run() {
Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
Rectangle rec = new Rectangle(scrSize.width, scrSize.width);
File file = new File("src/fsend");
while (true) {
bi = r.createScreenCapture(rec);
System.out.println("bi:"+bi);
try {
file.createNewFile();
FileImageInputStream fiis = new FileImageInputStream(file);
System.out.println(fiis);
ImageIO.write(bi, "JPEG", file);
byte []buf = new byte[1024];
int len = 0;
while ((len = fiis.read(buf)) != -1) {
fiis.read(buf);
dp = new DatagramPacket(buf, len, new InetSocketAddress("localhost",8081));
ds.send(dp);
}
dp = new DatagramPacket("end".getBytes(), 3, new InetSocketAddress("localhost",8081));
ds.send(dp);
file.delete();
fiis.close();
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
new Server();
}
}
import java.io.File;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;import javax.imageio.ImageIO;
import javax.imageio.stream.FileImageOutputStream;public class Client {
BufferedImage bi; DatagramSocket ds;
DatagramPacket dp; public Client() { try {
ds = new DatagramSocket(8081);
} catch (SocketException e) {
e.printStackTrace();
}
new ReThread().start();
} public class ReThread extends Thread { public void run() { byte []buf = new byte[1024];
File file = new File("src/freceive");
while (true) {
try {
file.createNewFile();
FileImageOutputStream fios = new FileImageOutputStream(file);
while (true) {
dp = new DatagramPacket(buf, buf.length);
ds.receive(dp);
if (new String(dp.getData(),0,dp.getLength()).equals("end")){
System.out.println("接收完图片");
break;
}
fios.write(dp.getData());
}
bi = ImageIO.read(file);
System.out.println(bi);
fios.close();
sleep(1000);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} } } public static void main(String[] args) {
new Client();
}}