2011-12-05 101 views
4

我有一個客戶端 - 服務器應用程序。服務器是純Java,客戶端是Android應用程序。他們使用ServerSocket通過TCP進行通信。如何將圖像從Java應用程序發送到Android應用程序?

我想在服務器上創建一個圖像,對其進行編輯(例如,在其上畫線),然後將其發送到客戶端以在屏幕上將其顯示爲位圖。

我的第一種方法是將android.graphics.Bitmap庫導入服務器以在那裏使用它,但是當然,因爲您不能在Android環境之外使用Android庫,所以這是行不通的。

我現在的做法是在服務器上使用BufferedImage,但問題是我無法找到如何以客戶端可以重新構建Bitmap的方式將其序列化。我嘗試過使用ImageIO.write,但是我在客戶端需要做些什麼?

有沒有人有如何解決這個問題的想法,或有更好的方法? 我感謝您的幫助。

回答

1

任何PNG或JPG圖像都可以在Android中使用BitmapFactory類進行解碼。獲取圖像的InputStream,然後使用BitmapFactory.decodeStream(inputStream)。它不需要特別序列化...只需發送圖像的字節。

+0

非常感謝,'BitmapFactory'正是我一直在尋找的。在服務器端,我現在使用'ImageIO.write(image,「PNG」,out);' – Waboodoo

0

有兩種方法可以在您的客戶端Android應用程序上獲取原始字節流。

  1. 使用的getPixels功能
  2. 使用copyPixelsToBuffer功能

的getPixels很簡單,爲您提供了基本的原始字節。 copyPixelsToBuffer拷貝到緩衝區中。

一旦你有原始字節,將它們發送到你的服務器。在這裏,在服務器端Java上,您可以使用諸如ImageJ之類的庫將原始字節流轉換爲Image,處理它,將其轉換回併發送回Android。

當您的客戶端應用程序接收到raw_stream時,請使用setPixels或copyPixelsFromBuffer函數將其再次轉換爲android.graphics.Bitmap。

相關問題