【发布时间】:2015-05-18 19:48:33
【问题描述】:
我正在尝试将图像从 android 客户端发送到 c# 服务器。 但是当我在服务器端收到字节时,我以多个字节数组接收它,所以我必须将这些数组组合成一个数组。 所以我使用:
byte[] _image = Append(byteArrayIn);
MemoryStream ms = new MemoryStream(_image);
ms.Position = 0;
Bitmap returnImage = new Bitmap(ms, true);
pictureBox1.Height = returnImage.Height;
pictureBox1.Width = returnImage.Width;
return returnImage;
然后:
Bitmap image = byteArrayToImage(mybytes);
pictureBox1.Image = image;
但是当它显示图像时,它只显示一半,好像在这个过程中丢失了一些数据。 它给了我这个。 http://i1139.photobucket.com/albums/n560/dalex100/ss2015-03-16at11.45.53_zps9d0otfm8.jpg
【问题讨论】:
-
你在哪里将“数组”组合成“一个数组”?你需要一个循环。
-
@greenapps Append 函数将所有字节数组追加到包含在 byteArrayIn 中的 List
中。所以 _image 包含所有字节。 -
我发现了我的问题之一。问题是图像来自几个字节数组,它只会显示第一个字节数组。例如,如果图像包含 6697 个字节,它会变成这样:4344、1024、1024,然后是 305。前 4344 个字节将被显示,其余字节将丢失,即使所有字节都附加到一个数组中。这就是为什么当所有字节都进入一个数组时,图像会正确显示。
-
没有。你需要一个循环开始。你没有把这些块放在一起。使用 TCP/IP 数据以块的形式进入是正常的。您只需要将它们放在一个循环中。你没有这样做。
-
我已经搜索了如何将所有内容放在一起的解决方案,但仍然无法正常工作。你有解决办法吗?
标签: c# android image sockets server