Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为了在Android上显示图像文件,我想知道是否采用这种方式_Android - Fatal编程技术网

为了在Android上显示图像文件,我想知道是否采用这种方式

为了在Android上显示图像文件,我想知道是否采用这种方式,android,Android,我有一个问题,在android上显示图像~ 我将尝试将转换后的文件发送到ByteArray,并将其转换为单个输入流发送到android 我的计划是 文件转换为字节[](在服务器上) 为每个转换的文件添加分隔符。然后把它们放在盒子里 单响应。扩展流(在服务器上) 获取输入流(在android上) 使用分隔符,从InputStream获取一个each byteArray并将其转换为 使用BitmapFactory.decodeByteArray()的位图文件,但未保存它们 (关于android) 服

我有一个问题,在android上显示图像~

我将尝试将转换后的文件发送到ByteArray,并将其转换为单个输入流发送到android

我的计划是

  • 文件转换为字节[](在服务器上)
  • 为每个转换的文件添加分隔符。然后把它们放在盒子里 单响应。扩展流(在服务器上)
  • 获取输入流(在android上)
  • 使用分隔符,从InputStream获取一个each byteArray并将其转换为 使用
    BitmapFactory.decodeByteArray()
    的位图文件,但未保存它们 (关于android)
  • 服务器:

    OutputStream outputstream = response.getOutputStream();
    imageDownload_fewfiles aa = new imageDownload_fewfiles();
    DataOutputStream outputstream2 = new DataOutputStream(outputstream);
    outputstream2.writeBytes("!@###!@###");
    outputstream2.write(aa.image_files());
    outputstream2.writeBytes("!@###!@###");
    
    安卓:

     InputStream inputStream = http.getInputStream();
     DataInputStream dataInputStream = new DataInputStream(http.getInputStream());
    
    这样可能吗??如果可能的话,我如何从inputStream获取每个字节数组


    请给我一些建议。。我不想使用第三部分

    假设您正确获得了输入流

    int length; // This should be get from the request.
    byte[] array = new byte[length]; 
    DataInputStream dataInputStream = new DataInputStream(inputStream);
    dataInputStream.readFully(array);
    

    假设您正确地获得了输入流

    int length; // This should be get from the request.
    byte[] array = new byte[length]; 
    DataInputStream dataInputStream = new DataInputStream(inputStream);
    dataInputStream.readFully(array);
    

    谢谢~但是我怎样才能通过Tearray获得每个文件??因为每个文件都加载到单个流中byteArray@tokhi这取决于如何将文件放入流中,但一种简单的方法是传递表示每个文件长度的整数列表。然后,你可以用整数来分隔数组。我还认为发送每个文件的长度。但我将尝试使用sigle outputstream发送文本。所以,我认为分隔符需要知道每个文件和文本byteArray的长度。我弄错了吗?谢谢~但是我怎样才能通过tearray获得每个文件??因为每个文件都加载到单个流中byteArray@tokhi这取决于如何将文件放入流中,但一种简单的方法是传递表示每个文件长度的整数列表。然后,你可以用整数来分隔数组。我还认为发送每个文件的长度。但我将尝试使用sigle outputstream发送文本。所以,我认为分隔符需要知道每个文件和文本byteArray的长度。我弄错了吗?只要做一个循环,读取输入流中的数据块。将chunck添加到字节数组或直接保存到文件。在添加之前,请检查是否接收到分隔符(您可能只接收到分隔符的几个字节)。如果您首先发送字节数组的大小,则协议会简单得多。而不是分隔符。如果接收器首先接收字节数组的大小,那么在循环中读取与所示相同的字节就容易多了。为什么要从接收到的数据中生成位图?会消耗你很多内存。你打算用它们做什么?我想在adroid上显示图像。我使用过bitmapfactory.decodestream(),但似乎bitmpfactory.decodestream()的使用数量与文件数量一样多。。我觉得这样不好。所以,在我尝试发布我给你们的建议之前,我想得到一些建议,但你们并没有做出反应。此外,关于显示图像的内容也太少了。只需从输入流中读取数据块就可以了。将chunck添加到字节数组或直接保存到文件。在添加之前,请检查是否接收到分隔符(您可能只接收到分隔符的几个字节)。如果您首先发送字节数组的大小,则协议会简单得多。而不是分隔符。如果接收器首先接收字节数组的大小,那么在循环中读取与所示相同的字节就容易多了。为什么要从接收到的数据中生成位图?会消耗你很多内存。你打算用它们做什么?我想在adroid上显示图像。我使用过bitmapfactory.decodestream(),但似乎bitmpfactory.decodestream()的使用数量与文件数量一样多。。我觉得这样不好。所以,在我尝试发布我给你们的建议之前,我想得到一些建议,但你们并没有做出反应。此外,关于显示图像,您也讲得太少。