gpt4 book ai didi

Java ImageIO.write 发送的数据比 ImageIO.read 接收的多?

转载 作者:搜寻专家 更新时间:2023-11-01 03:41:18 25 4
gpt4 key购买 nike

我正在尝试通过套接字发送图像,但我遇到了一个奇怪的问题。ImageIO.write 发送的数据比 ImageIO.read 接收的数据多。例如,如果我在循环中有以下代码:

(客户端)

out.writeByte(222);//magic num for testing
out.writeByte(blockSize);
out.writeByte(x / blockSize);
out.writeByte(y / blockSize);
ImageIO.write(part, "PNG", out);

(服务器端)

if (din.readUnsignedByte() != 222) {
throw new RuntimeException();
}
int partSize = din.readUnsignedByte();
int partX = partSize * din.readUnsignedByte();
int partY = partSize * din.readUnsignedByte();
BufferedImage part = ImageIO.read(din);

在第二次迭代中,魔数(Magic Number)将失败,因为 ImageIO.read 尚未读取从另一端发送的所有数据。为什么是这样?这似乎是一个重大问题。还是我遗漏了什么?

编辑:截至 2008 年 4 月 14 日,这似乎是一个已确认的错误。错误 ID 6687964 .为什么这个问题没有被修复?...啊。

最佳答案

我遇到了同样的问题。程序收到文件后,向发件人发回确认信息。如果发送方写入一个转义字符 new String("\n").getBytes() 然后刷新 OutputStream 它应该结束缓冲流并允许您 InputStream.ReadLine() 在另一端。这应该得到多余的数据,循环的下一次重复将得到新的图像数据。我知道这很烦人,但它有效

关于Java ImageIO.write 发送的数据比 ImageIO.read 接收的多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13694381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com