【问题标题】:Image data lost when sending from android to server c# trough socket通过套接字从android发送到服务器c#时图像数据丢失
【发布时间】: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


【解决方案1】:

我终于解决了我的问题。出现问题是因为操作在线程中,图片在显示前无法完全处理。

【讨论】:

    猜你喜欢
    • 2014-06-07
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    相关资源
    最近更新 更多