Java - 通过套接字传输时可序列化图像为黑色

标签 java image sockets awt serializable

我通过 Java 中的套接字发送图像,当客户端和服务器都在一台计算机上时,一切都很好,但是当我通过 LAN 运行它时,生成的图像是黑色的。我使用 Robot 类拍摄屏幕图像,然后使用 AffineTransform 将其缩小。 客户端代码:

        BufferedImage s = null;
        socket = new Socket("AJ-PC", 4444);
        out = new ObjectOutputStream(socket.getOutputStream());
        Robot r = new Robot();
        while(true) {
              s = r.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
              double scale = 0.75;
              int w = (int) (s.getWidth() * scale);
              int h = (int) (s.getHeight() * scale);
              BufferedImage outImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);                
              AffineTransform trans = new AffineTransform();
              trans.scale(scale, scale);
              Graphics2D g = outImage.createGraphics();
              g.drawImage(s, trans, null);
              g.dispose();
              Thread.sleep(400);
              out.writeObject(new SerializableImage(outImage));
       }

服务器代码:

        server = new ServerSocket(4444);
        socket = server.accept();
        System.out.println(socket);
        in = new ObjectInputStream(socket.getInputStream());
        while(running) {
            bi = (SerializableImage) in.readObject();
            b = true;
            System.out.println("new");
            panel.repaint();
        }

最佳答案

我正在使用 http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx 中的 PsExec 实用程序,这似乎就是问题所在。当我不使用它远程执行时,它运行良好。

关于Java - 通过套接字传输时可序列化图像为黑色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10858563/

相关文章:

java - Bazel - 获取当前操作系统和 CPU 类型作为构建规则中使用的变量

java - 线程交错 - 可以输出什么可能的结果

ios - Xcode 6.1 对 iPhone 6 和 4s 模拟器使用相同的 2x 图像

iphone - 跳过 Xcode iPhone 应用程序的 'CompressResources' 构建步骤

javascript - jQuery - 在图像之间随机播放

java - InputStream 读取不返回 -1

python - pyinstaller导入错误: No module name '_socket'

java - AND 是否优先于 OR?

java - 向 Android 电报源代码添加新语言

swift - 如何在 swift 2.0 中将 sockaddr_in 转换为 sockaddr?