显示来自输入流的图像

Was*_*eiB 3 java sockets android android-imageview

我可以将字符串从 Android 手机发送到计算机,反之亦然。但是,我想从计算机发送图像并将其显示到手机上。就我而言,电脑是服务器,手机是客户端。

这是我在服务器端的代码的一部分:

socket = serverSocket.accept();
dataOutputStream = new DataOutputStream(socket.getOutputStream());
captureScreen("C:\\Users\\HP\\Desktop\\capture.png");

File f = new File("C:\\Users\\HP\\Desktop\\capture.png");
byte [] buffer = new byte[(int)f.length()];
dataOutputStream.write(buffer,0,buffer.length);
dataOutputStream.flush(); 
Run Code Online (Sandbox Code Playgroud)

请注意,这captureScreen()是一种成功截取服务器屏幕截图并将其保存为上述路径中的 .PNG 图像的方法。

现在,在Android手机客户端,如果我有一个ImageView控件,如何读取从计算机发送的图像并将InputStream其显示在屏幕上ImageView

此外,我是否成功地将图像写入dataOutputStream?如果有人帮助我,我会很高兴!

gab*_*sch 5

您可以调用setImageBitmap(Bitmap bm)ImageView 的 。

http://developer.android.com/reference/android/widget/ImageView.html

如何将图像数据发送给客户端:这取决于您选择的解决方案,但从技术上讲,您可以使用与纯 Java 相同的库。

您可以使用流来android.graphics.BitmapFactory创建Bitmap

http://developer.android.com/reference/android/graphics/BitmapFactory.html

Bitmap bitmap1 = BitmapFactory.decodeStream(inputStream);
Bitmap bitmap2 = BitmapFactory.decodeFile(filename);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,但decodeStream(inputStream)不起作用,我认为它返回null (3认同)