作者tkcn (小安)
看板java
标题Re: [问题] ObjectOutputStream + ImageIO 出现的问题
时间Fri Jan 1 21:23:58 2010
终於把这个问题弄清楚了。
让我从实验的步骤开始说明吧。
---
1. 为了要方便观察接收到的封包,
所以我做了一张只有 1x1 的图片,
接着再用程式把这张图片读进去再重新写成图片。
这张图片的 16 进位 data 如下: (69-byte)
89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
00 00 00 01 00 00 00 01 08 02 00 00 00 90 77 53
DE 00 00 00 0C 49 44 41 54 78 DA 63 F8 FF FF 3F
00 05 FE 02 FE 33 12 95 14 00 00 00 00 49 45 4E
44 AE 42 60 82
2. 从传送端用 ImageIO.write() 送出这张图片,
接收端会收到完全相同的 data。
3. 传送端连续传送两次此图片时,
也只是相同的 data 重复两次,
并没有看到我所预期的...多出来的 16-byte。
於是我又让接收端用 ImageIO.read(),
结果还是一样,第 1 张没问题,第 2 张就会失败。
4. 实验做到这里其实就可以看出端倪了,
剩下来都只是些验证了,我就直接讲结论吧。
ImageIO.write() 会写出 69 byte,
而 ImageIO.read() 只会读入 53 byte,
我试着把原始的 png 档案只留下前 53 byte,(或着是随意窜改最後 16-byte)
这个时候秀图软体是没办法开启这个档案的,
但是用 ImageIO.read() 还是可以正常的读入图片。
我猜测最後的 16-byte 应该是 png 格式的 check sum 之类的东西吧,
而 ImageIO.read() 并没有做这样的验证,甚至资料连读都没读 Orz
有错请指教,谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.132.160.117