我正在開發一個小型庫,以在Android應用程序和Java桌面應用程序中工作。我需要使用BufferedImage從圖像中獲取RGB值,但我無法在Andorid中使用BufferedImage。反之亦然Bitmap。Java BufferedImage/Android位圖
有什麼辦法可以在Android中實現BufferedImage或在Java桌面應用程序中實現Bitmap?
謝謝
我正在開發一個小型庫,以在Android應用程序和Java桌面應用程序中工作。我需要使用BufferedImage從圖像中獲取RGB值,但我無法在Andorid中使用BufferedImage。反之亦然Bitmap。Java BufferedImage/Android位圖
有什麼辦法可以在Android中實現BufferedImage或在Java桌面應用程序中實現Bitmap?
謝謝
你可以有你的庫沒有使用任何一個,但你定義一個擁有所有你所需要的功能的一些接口。然後,對於Android版本,您可以使用Bitmap對象實現接口,而對於桌面版本,可以使用BufferedImage實現接口。使用你的庫的調用者通過與調用者使用的平臺相對應的接口的實現,並且你的代碼永遠不必擔心平臺特定的東西。
當然,這是否值得努力取決於圖像對象在圖書館中的使用範圍。如果只是需要讀取圖像的一行或兩行代碼,則可能不值得麻煩,其他答案中給出的反射方法可能更容易。
你試試這個嗎? :How to load BufferedImage in android?
當您有位圖時,您可以使用getPixel方法來查找顏色。
您可以使用包裝器代碼嘗試調用特定於平臺的庫,並在NoClassDefFoundError不存在時捕獲NoClassDefFoundError。這樣您可以動態確定要使用的適當API。
聽起來不錯。如果我理解正確,我必須在我的自定義庫中包含Andorid庫(包括位圖)和Java系統庫(包括bufferedImage)?然後使用try/catch捕獲異常?這樣對嗎? – megatxi
使用反射來查找要使用以加載位圖的類。成功後,從現在起使用它。
另一種方法是創建自己的圖像解析器。這裏有一些解析PNG文件的鏈接:
http://www.java-gaming.org/index.php/topic,24202。
http://hg.l33tlabs.org/twl/file/tip/src/de/matthiasmann/twl/utils/PNGDecoder.java
http://www.java2s.com/Code/Java/2D-Graphics-GUI/PNGDecoder.htm
是的,但如果我使用位圖,那麼我不能在我的Java桌面應用程序中使用它,因爲要使用位圖我需要使用Android庫。你明白我說的嗎?? – megatxi
好的,我明白這個問題。我正在尋找一個問題,但我認爲你需要創建自己的BufferReader。 :s – Skies
我知道,但我知道是否有比創建「自己的圖像處理類」更簡單快捷的解決方案。 – megatxi