3

画像をメモリに完全にロードせずに、スケーリング、トリミング、回転などの最も単純な操作を実行できるライブラリを誰かが提案できますか?

状況: 画像を非常に大きなサイズから縮小する必要がありますが、縮小された画像はまだ大きすぎてメモリに割り当てることができません (標準の Android ツールを使用する場合)。スケールダウンしたバージョンをアップロードするだけでよいので、ネイティブ ライブラリを介してスケーリングし、FileInputStream を介してアップロードすることを考えました。

私は ImageMagic を使用しようとしましたが、それは仕事をしますが、パフォーマンスは非常に悪いです (おそらく速度を上げる方法はありますか?)

4

2 に答える 2

1

Android用のOpenCVをチェックしたいかもしれません

于 2012-11-23T16:36:36.437 に答える
0

画像をメモリにプルすることで元の Android ビットマップ機能を使用できますが、Android は画像が読み込まれる前に画像をサンプリングできます。

例えば:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
Bitmap myBitmap = BitmapFactory.decodeStream(inputstream,null,options);

これにより、イメージ全体の半分のメモリ フットプリントでビットマップがメモリに読み込まれます。inSampleSizeを変更して実験し、アプリケーションに適合するようにすることができます。

その場でサンプル サイズを計算することもできます。目的の最終的な画像サイズがわかっている場合は、画像をメモリに読み込む前に現在のファイル サイズを取得し、式inSampleSize = OriginalSizeを使用してサンプル サイズを計算できます。 /必須サイズ。ただし、サンプル サイズは 2 のべき乗のときに最適に使用されるため、これを調整できます。

編集:ここの素晴らしい例https://stackoverflow.com/a/823966/637545

于 2012-11-23T17:07:16.703 に答える