Re: [問題] ObjectOutputStream + ImageIO 出現的問題

看板java作者 (小安)時間14年前 (2010/01/01 21:24), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/7 (看更多)
終於把這個問題弄清楚了。 讓我從實驗的步驟開始說明吧。 --- 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
文章代碼(AID): #1BFVTmuk (java)
討論串 (同標題文章)
文章代碼(AID): #1BFVTmuk (java)