gpt4 book ai didi

java - 将图像和视频文件从 android 发送到服务器并接收处理

转载 作者:太空宇宙 更新时间:2023-11-03 13:32:24 24 4
gpt4 key购买 nike

我想从 android 手机发送视频/图像到服务器并接收处理过的视频/图像。 (例如,我发送图像并以二进制图像或灰度图像或调整大小等方式接收此图像)伙计们,最好和最简单的方法是什么?网址? socket ? XML?以及如何去做?

我试图通过流 ( Shared Library not found error on android LogCat ) 来做,但我也不知道如何去做。

提前致谢

最佳答案

首先,在回答问题的特定部分之前,这里有一些一般性建议:

尝试在设备上做一些琐碎的事情。只是在图像上放置一个 mask 或旋转/调整它的大小是非常琐碎的,可以在设备上执行。这样,用户不需要上传任何东西(并且等待)并且您的服务器负载不会那么重。

视频和图片可以变大。请考虑到这一点。我想到的一个想法是,用户应该只上传一次图像/视频,但应该能够在下载最终结果之前执行多次操作。否则,您将面临漫长的等待时间和高流量。

告诉你的用户!如果你真的开始上传(也许是个人的)图片/视频到你自己的服务器,确保你使用的是你能得到的最大安全性(SSL 应该是必须的-有)并告诉您的用户您将把他们的内容上传到您的服务器。此外,您应该给他们拒绝的选择权,否则,您可能会面临诉讼。


现在,到它的技术部分:

从服务器上载/下载文件的工作流程几乎总是相同的:

  • 使用Socket 打开到您服务器的连接
  • 在您的文件上获取一个流(在您的例子中,一个 FileInputStream )
  • 读取字节数组中的二进制数据 block
  • 将读取的数据 block 从Socket写入输出流
  • 完成后,关闭流,然后关闭套接字

在您的服务器上,您以相反的方式执行此操作并从 InputStream 读取内容,将内容写入 FileOutputStream .

这是一个看起来如何的小例子:

Socket server = new Socket("192.168.178.32", 1337);
OutputStream outputStream = server.getOutputStream();
FileInputStream in = null;
try {
in = new FileInputStream("/some/path/to/gras.jpeg");
// Write to the stream:
byte[] buffer = new byte[1024]; // 1KB buffer size
int length = 0;
while ( (length = in.read(buffer, 0, buffer.length)) != -1 ){
outputStream.write(buffer, 0, length);
}
outputStream.flush();
} finally {
if (in != null) in.close();
socket.close(); // Will close the outputStream, too.
}

此代码驳斥了可能会在此处抛出异常的事实。您需要以适当的方式处理这些问题。


您应该考虑的一点是,用户可能会从移动互联网连接上传他们的内容,这些内容可能会被拦截(例如在通过隧道时)。在这种情况下,您需要实现可恢复的上传/下载。

关于java - 将图像和视频文件从 android 发送到服务器并接收处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11275423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com