没有ImageIO可以读取图像吗?

时间:2015-10-14 20:24:19

标签: java sockets

我正在尝试读取图像并通过Java套接字传递它。但有一些不合适的位。在diff工具中查看时,我意识到所有大于127的数字都被截断了。

所以我想将它转换为char []数组并返回它。现在我得到了一个不同的complette图像,可能是因为char的大小。

        try (PrintWriter out = new PrintWriter(this.socket.getOutputStream(), true);
                BufferedInputStream in = new BufferedInputStream(new FileInputStream(filename), BUFSIZ)) {
            byte[] buffer = new byte[BUFSIZ];
            while (in.read(buffer) != -1) {
                response.append(new String(buffer));
                out.print(response.toString());
                response.setLength(0);
            }
        } catch (IOException e) {
            System.err.println(e.getMessage());
        }

这是我的阅读和交付代码。

我已经阅读了很多次使用ImageIO,但我想没有,因为我不知道它是否是一个图像。 (那么其他文件类型如可执行文件呢?)

那么,有没有什么办法可以将它转换为无符号字节,可以在客户端上正确传递?我是否必须使用与read()不同的东西来实现它?

2 个答案:

答案 0 :(得分:2)

OutputStream.用于字符数据。使用read()并且您通常会假设int count; byte[] buffer = new byte[8192]; while ((count = in.read(buffer)) > 0) { out.write(buffer, 0, count); } 填充了缓冲区。

以下循环将正确复制任何内容。记住它。

.par-1 {
    width: 3px;
    color:#fff;
    padding: 1px 0;
}
.par-2 {
    width: 6px;
    color: #000;
    padding: 0 2px;
}
.par-3 {
    width: 9px;
    color: #fff;
    padding: 3px 0;
}
.par-4 {
    width: 12px;
    color: #000;
    padding: 0 4px;
}
.par-5 {
    width: 15px;
    color: #fff;
    padding: 5px 0;
}
.par-6 {
    width: 18px;
    color: #000;
    padding: 0 6px;
}

答案 1 :(得分:2)

在我之后重复:byte不是Writer而且它不是代码点。

在我之后重复:OutputStream不是 try (OutputStream out = this.socket.getOutputStream(); BufferedInputStream in = new BufferedInputStream(new FileInputStream(filename), BUFSIZ)) { byte[] buffer = new byte[BUFSIZ]; int len; while ((len = in.read(buffer))) != -1) { out.write(buffer, 0, len); } } catch (IOException e) { System.err.println(e.getMessage()); }

 Backbone.Events.testEvent = "just a quick proof of concept test";

(这是来自内存,请检查args是否为write())。