相关疑难解决方法(0)

在java中的套接字上发送屏幕截图(bufferedImage)

我正在通过套接字发送bufferedImage,我正在使用此帖子中的示例:

寄件人

   BufferedImage image = ....;
   ImageIO.write(image, "PNG", socket.getOutputStream());
Run Code Online (Sandbox Code Playgroud)

接收器

   BufferedImage image = ImageIO.read(socket.getInputStream());
Run Code Online (Sandbox Code Playgroud)

它工作 - 如果,只有在这一行之后我关闭发送者的outputStream:

 ImageIO.write(image, "PNG", socket.getOutputStream());
Run Code Online (Sandbox Code Playgroud)

除了关闭outputStream之外我还能做些什么吗?

另外,我还能做些什么来避免一共使用ImageIO吗?似乎需要很长时间才能做任何事情.另请注意,由于性能问题,应该不惜一切代价避免读取或写入硬盘.我需要尽可能快地进行这种传输,(我正在尝试并尝试创建类似于VNC的客户端并将每个屏幕截图保存到硬盘上会大大减慢一切)

@Jon Skeet

编辑3:

发件人:(请注意,我发送的JPG图像不是PNG).

                    int filesize;
                    OutputStream out = c.getClientSocket().getOutputStream();

                    ByteArrayOutputStream bScrn = new ByteArrayOutputStream();
                    ImageIO.write(screenshot, "JPG", bScrn);
                    byte[] imgByte = bScrn.toByteArray();
                    bScrn.flush();
                    bScrn.close();

                    filesize = bScrn.size();
                    out.write(new String("#FS " + filesize).getBytes()); //Send filesize
                    out.write(new String("#<IM> \n").getBytes());        //Notify start of image

                    out.write(imgByte); //Write file
                    System.out.println("Finished");                                 
Run Code Online (Sandbox Code Playgroud)

收件人:( input套接字输入流在哪里)

尝试#1:

String str = input.toString();
imageBytes = …
Run Code Online (Sandbox Code Playgroud)

java sockets bufferedimage

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

bufferedimage ×1

java ×1

sockets ×1