Android:寻找一种方法来加速通过 wifi 从 Android 到 PC 的图像传输

标签 android image sockets networking

我正在尝试通过 wifi 在我的 Android 手机和我的 PC 之间快速传输图像。我已经编写了代码来执行此操作,但传输一张 640x480 像素的图像可能需要 4-5 秒。我想知道我的方法是否有缺陷,有没有更快的方法来做到这一点?

这是服务器代码

void main(String[] args)
{
        try {
             ServerSocket serverSocket = new ServerSocket(5555);
             Socket clientSocket = serverSocket.accept();

             long startTime = System.currentTimeMillis();
             InputStream clientInputStream = clientSocket.getInputStream();
             BufferedImage BI = ImageIO.read(clientInputStream);
             long endTime = System.currentTimeMillis();
             ImageIO.write(BI,"png",new File("test.png"));
             System.out.println((endTime - startTime) + " ms.");

             } catch (IOException e) 
             {
                e.printStackTrace();
             }     
}
}

这是Android客户端代码

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Bitmap imageToSend = BitmapFactory.decodeResource(this.getResources(),R.drawable.img);

    try 
    {
        Socket socket = new Socket("192.168.1.1",5555);         
        imageToSend.compress(CompressFormat.PNG,0 , socket.getOutputStream());          
    }        
    catch (Exception e) {
        e.printStackTrace();
    }
}

感谢您提供的任何帮助。

最佳答案

我能想到的两件事:

  • 在输出中使用缓冲输出流,例如

    new BufferedOutputStream(socket.getOutputStream());

  • 首先将图像写入磁盘。然后尝试并行打开套接字,每个套接字传输图像的不同偏移量(例如,将图像拆分为 3 个作业,每个并行传输到其他作业)。这将解决一些 TCP 行为。

关于Android:寻找一种方法来加速通过 wifi 从 Android 到 PC 的图像传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4738157/

相关文章:

java - 如何在 Java 应用程序中绘制图像 "really"

android - 观察 Android Jetpack DataStore 值变化

android - 使用 Altbeacon 库监控 iBeacon

android - 如何从 PreferenceActivity 中删除首选项?

java - 在 Google App Engine 中使用 Java,如何从 int r、g、b 值的数组中制作 BMP 图像?

java - 从套接字读取时线程挂起。它与 https ://bugs. openjdk.java.net/browse/JDK-8049846 有关吗?

java - android/java 中的倒置键盘

ruby-on-rails - 使用 Rails 的 asset pipeline 时如何获取实际文件路径(与 send_file 一起使用)

javascript - nodejs 错误 : Parse Error at Socket. ondata

java - 如何从服务器获取客户端套接字的确认?