TCPで10MBの画像を送ったのですが受け取る側では850KB程度になってしまいます。
受信部分のbyte型からImage型への変換が原因かと思い、他の変換を試しましたがだめでした。
どなたかご教授願えると幸いです。
よろしくお願いします。
送信部分
C#
1 byte[] buf = ToByteArray(ImageSource); 2 byte[] tbuf = new byte[buf.Length + 1]; 3 tbuf[0] = (byte)'i'; 4 for (int i = 1; i < buf.Length + 1; i++) { 5 tbuf[i] = buf[i - 1]; 6 } 7 netStream.Write(tbuf, 0, tbuf.Length); 8 9///byte型に変換 10public byte[] ToByteArray(Image imageIn) 11 { 12 var ms = new MemoryStream(); 13 imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); 14 return ms.ToArray(); 15 }
受信部分
C#
1 string str = ""; 2 byte[] buf = new byte[1024 * 1024 * 11]; 3 int len = s.Read(buf, 0, buf.Length); 4 while (len > 0) { 5 var tbuf = new byte[buf.Length - 1]; 6 for (int i = 0; i < buf.Length - 1; i++) { 7 tbuf[i] = buf[i + 1]; 8 } 9 if (buf[0] == (byte)'i') 10 { 11 var img = ToImage(tbuf); 12 var e = new MessageEventArgs(); 13 e.Type = MessageType.Image; 14 e.Image = img; 15 e.Message = null; 16 e.IPAddress = ipa; 17 ReceivedMessageHandler(e); 18 } 19 else if (buf[0] == (byte)'m') { 20 str = Encoding.UTF8.GetString(tbuf, 0, len - 1); 21 var e = new MessageEventArgs(); 22 e.Type = MessageType.Message; 23 e.Image = null; 24 e.Message = str; 25 e.IPAddress = ipa; 26 ReceivedMessageHandler(e); 27 } 28 len = s.Read(buf, 0, buf.Length); 29 } 30///Imageへ変換 31public static Image ToImage(byte[] byteArrayIn) 32 { 33 var ms = new MemoryStream(byteArrayIn); 34 var returnImage = Image.FromStream(ms); 35 return returnImage; 36 }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。