将图像文件发送到服务器并在Android

时间:2018-02-16 12:43:05

标签: android imageview

我的Image file存储在Android设备本身的local storage中。用户点击按钮后,我想send将图片receive发送到服务器,然后python script处理server后的图片。ImageView。然后我想在ImageView中显示它并将其存储在我的本地存储中。我正在寻找客户端和服务器端实现。此外,服务器应该始终运行python脚本吗? (处理客户端发送的图像并将其发送回客户端的图像处理脚本)

  

这样做的正确方法是什么?

     

这个过程的基本工作流程是什么?

例如:根据我的理解,

  • 客户端将图像发送到服务器。
  • 服务器在映像上运行python脚本(假设它检测到新映像并自动运行python脚本)
  • 处理完毕后,服务器将使用已处理的图像进行响应。 (现在我应该等待服务器发回处理过的图像吗?因为有时可能会有延迟)
  • 然后,客户端会在train= np.reshape(train,[-1,length,1]) test= np.reshape(test,[-1,length,1])
  • 上显示图片

我做了一些研究,发现了单独的教程来发送和接收图像。

文件接收:https://www.androidhive.info/2012/07/android-loading-image-from-url-http/

文件上传:https://www.androidhive.info/2014/12/android-uploading-camera-image-video-to-server-with-progress-bar/

请指定我可以使用的其他方法。

2 个答案:

答案 0 :(得分:4)

有很多方法可以做到这一点,当您在Android中开始开发时,您可以使用您在问题中发布的链接。但是一旦你非常认真地考虑了你上传和下载的代码的性能和数量,你可能需要使用一些非常知名的库。

改造

可以使用上传图片(multipart)到服务器。代码少且可靠。 https://medium.com/@adinugroho/upload-image-from-android-app-using-retrofit-2-ae6f922b184c

<强>滑翔

大多数Android开发人员用来下载图像的有用库之一。 https://github.com/bumptech/glide

你只需要编写几行代码来下载和显示图像,如下所示: -

Glide.with(context)
    .load("http://via.placeholder.com/300.png")
    .into(ivImg);

同样有很多方法可以实现这一点,选择其中一种方法取决于你。但上面提到的是android开发人员中非常常用的库。

答案 1 :(得分:2)

首先,您需要图像上传到服务器

  • 根据协议可能会有各种解决方案,但我建议您使用OkHTTP,因为它在Android生态系统中被广泛采用,并且易于使用Uploading a large file in multipart using OkHttp。其他评论建议使用下面的OkHTTP进行改造。

下载很简单。上传图像后,服务器需要以某种方式响应。它可以为您提供网络上已处理图像的链接,也可以二进制形式返回。

  • 如果它提供链接,您可以使用Picasso

    将其加载到ImageView中

    Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

  • 如果它返回二进制文件,则必须将其存储在文件https://developer.android.com/training/data-storage/files.html中,然后您可以从文件创建URI并再次使用Picasso

    加载它

    Picasso.with(context).load(YOUR_URI).into(imageView);