web-dev-qa-db-ja.com

AndroidおよびJava

私は現在、小さなプロジェクトに取り組んでいます。このプロジェクトでは、URLから画像を読み込み、サイズを変更して、指定したカラーパレットを使用して色深度を16色のみに変更します。私にとっての主な問題は、Androidデバイスとデスクトップコンピューターで使用できるプログラムが必要なことです。両方のシステムで機能する優れた画像処理ライブラリを知っていますか?

前もって感謝します。

24
Octoate
11
Radim Burget

このページの回答は2014年2月の時点でかなり古いものです。無料のAndroid画像処理ライブラリを探していました)そして私はここでスタンフォードの講義ノートに出くわしました: http://www.stanford.edu/class/ee368/Android/index.html

もう少し調べてみると、コースの教材で OpenCV を使用していることがわかりました。 Javaインターフェイス(および他の多くの言語))がありますが、ライブラリはC++でネイティブに記述されています。

ライブラリを採用しているGoogle、Yahoo、Microsoft、Intel、IBM、Sony、Honda、Toyotaなどの定評のある企業に加えて、OpenCVを多用しているApplied Minds、VideoSurf、Zeiteraなどの多くのスタートアップがあります。

私はこれを見つけて興奮しています(!)。家に帰ってそれを試してみるのを楽しみにしています。

5
Zhubarb

Android NDK を使用すると、Java.awtやAndroidクラス)を必要としない既存のC/C++ライブラリを使用できます。たとえば、簡単にコンパイルできます。 libpngをAndroidの共有ライブラリとして使用し、JNIインターフェイスを記述してJavaレイヤーからpngライブラリに画像を渡します。同様に、次のことも可能です。 libpngをデスクトップコンピューターの共有ライブラリとしてコンパイルし、そこから使用します。

私は最近、Android用のオープンソースライブラリをコンパイルする方法について チュートリアル を書きました。 Androidソースを参照すると、jni経由で skia グラフィックライブラリを使用するクラスがいくつか見つかります。以前はskiaを使用したことがありませんが、Androidの基本フレームワークにはskiaが含まれているため、アプリ/デスクトッププログラムで動作させるのはそれほど難しくありません。

クロスプラットフォームプログラムの作成は、モバイル開発者コミュニティの間で活発に関心を集めている分野であり、 libgdx などの一部のエンジンは非常に優れています。だからあなたが試みていることは間違いなく可能です。

3
James Lim

オクトエート、

私はあなたが望むことをするライブラリが存在するとは思わない、その理由はあなたがJavaが使うつもりであるJava2Dレンダリングパイプラインはある程度です。Androidでは、これは存在しません。

Androidは、画像操作用の独自のグラフィカルパイプラインを提供し、実際には、標準のJavaではより複雑な多くのことを簡素化します。

そうは言っても、これらの違いに加えて抽象化レイヤーとして機能するライブラリ(JJIL)を見つけたようです。その場合、パフォーマンスについて少し心配し、独自のコードでテストを行って、どのように機能するかを確認します。プラットフォームメソッドと比較して実行します。たとえば、私はJJILからこの引用を見ました:

画像をAndroidビットマップからJJILRgbImagesに変換できます

RgbImages のソースを見ると、画像データが変換されて内部配列に格納されているように見えます。これらの抽象化レイヤーはすべて、CPU時間とメモリを消費します。特に、高解像度のカメラと高帯域幅の接続により、モバイルデバイス上の画像が大きくなるためです。

これはそれほど大きな問題ではないかもしれませんが、ここでも、プロファイリング/テスト/パフォーマンスの比較を行うことをお勧めします。

1
Riyad Kalla