我正在尝试通过 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/