Android アプリケーションと Java デスクトップ アプリケーションの両方で動作する小さなライブラリを開発しています。画像から RGB 値を取得するには BufferedImage を使用する必要がありますが、Andorid では BufferedImage を使用できません。また、ビットマップではその逆です。
Android に BufferedImage を実装する方法や、Java デスクトップ アプリケーションに Bitmap を実装する方法はありますか??
ありがとう
Android アプリケーションと Java デスクトップ アプリケーションの両方で動作する小さなライブラリを開発しています。画像から RGB 値を取得するには BufferedImage を使用する必要がありますが、Andorid では BufferedImage を使用できません。また、ビットマップではその逆です。
Android に BufferedImage を実装する方法や、Java デスクトップ アプリケーションに Bitmap を実装する方法はありますか??
ありがとう
ライブラリでどちらも使用しないようにすることもできますが、必要なすべての機能を備えた、定義したインターフェイスを使用できます。次に、Android バージョンの場合は Bitmap オブジェクトを使用してインターフェイスを実装し、デスクトップ バージョンの場合は BufferedImage を使用してインターフェイスを実装します。ライブラリを使用する呼び出し元は、呼び出し元が使用しているプラットフォームに対応するインターフェイスの実装を渡します。コードは、プラットフォーム固有のものについて心配する必要はありません。
もちろん、これを行う価値があるかどうかは、ライブラリで画像オブジェクトがどの程度広く使用されているかによって異なります。画像を読み取る必要があるのが1行または2行のコードである場合、問題に値しない可能性があり、他の回答で提供されているリフレクションメソッドの方が簡単な場合があります。
プラットフォーム固有のライブラリを呼び出そうとするラッパー コードを持つことができ、それらが存在しない場合は NoClassDefFoundError をキャッチします。このようにして、使用する適切な API を動的に決定できます。
リフレクションを使用して、ビットマップをロードするために使用するクラスを見つけます。成功した場合は、それを使用してください。
別の方法は、独自のイメージ パーサーを作成することです。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