如何将图像从Java应用程序发送到Android应用程序?

时间:2011-12-05 18:55:03

标签: java android bitmap

我有一个客户端 - 服务器应用程序。服务器是纯Java,客户端是Android应用程序。它们使用ServerSocket通过TCP进行通信。

我想在服务器上创建一个图像,对其进行编辑(例如在其上绘制线条),然后将其发送到客户端,在屏幕上显示为位图。

我的第一种方法是将android.graphics.Bitmap库导入服务器以在那里使用它,但当然因为你不能在Android环境之外使用Android库,所以这不起作用。

我现在的方法是在服务器上使用BufferedImage,但问题是我无法找到如何以客户端可以从中重构Bitmap的方式对其进行序列化。我尝试使用ImageIO.write,但那么我在客户端需要做什么?

有没有人知道如何解决这个问题,或者有更好的方法? 感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

可以使用BitmapFactory类在Android中解码任何PNG或JPG图像。为图片获取InputStream,然后使用BitmapFactory.decodeStream(inputStream)。它不需要特别序列化......只需发送图像的字节。

答案 1 :(得分:0)

有两种方法可以在客户端Android应用程序上获取原始字节流。

  1. 使用getPixels功能
  2. 使用copyPixelsToBuffer函数
  3. getPixels非常简单,并为您提供基本的原始字节。 copyPixelsToBuffer在缓冲区中复制。

    获得原始字节后,将它们发送到您的服务器。在服务器端Java,您可以使用ImageJ这样的库将原始字节流转换回Image,处理它,将其转换回并发送回Android。

    当您的客户端应用程序收到raw_stream时,请使用setPixels或copyPixelsFromBuffer函数将其再次转换为android.graphics.Bitmap。