2011-01-18 8 views
0

私のアプリケーションでは、Androidのビルトインアプリケーションで撮影した画像を処理する必要があります。それらはJPEG形式に保存されており、各ピクセルにアクセスする必要があります。 jpegイメージからBitmapインスタンスを作成しようとしましたが、非常に頻繁にOutOfMemoryExceptionが表示されます。サイズを変更したり画像を切り抜くことはできません。解決策はありますか?Androidでjpegを開く - 私はOutOfMemoryExceptionを受け取ります

+0

ユースケースについて説明できますか、画像で何をする必要がありますか?多分それに代わる方法があります。 –

+0

バイナリ化、グレースケール変換、さまざまなフィルタなど、さまざまなデジタル画像処理アルゴリズムを実行する必要があります。 –

答えて

1

BitmapRegionDecoderをご覧ください。 APIレベル10以降で使用できます。イメージファイルの一部をデコードし、各チャンクを処理できます。

1

BitmapFactoryはしばしばOutOfMemoryExceptionsをスローしますが、私は実際には回避策を発見したことはないと恐れています。それは独自のメモリ管理を行っているようですが、実際にはイメージを解析することができません。画像を大きく扱わなければならなかった2つのアプリケーションでは、画像を解析できないときに例外をキャッチしてUIの空白を残すだけでした。時には、後でやり直すと、BitmapFactoryの内部メモリ状態がうまく機能していると思われる画像が解析されます。

J2MEアプリケーションで作業していたときに、純粋なJavaオープンソースのJPEGパーサーを見つけようとしました。そのため、JPEGサポートが組み込まれていない携帯電話でも使用できます。そのようなことは見つけにくいとわかりました。私が見つけた最も近いものは、Eclipseソースの深みに埋もれていました。私はそのソースを取ることができました、それを簡略化して試してみてください。 (プログレッシブスキャンJPEGでどうやってやったのか分かりませんが)私たちのJ2MEデバイスは馬鹿げて遅かったです(特に彼らがほとんど下位のものだったので)私たちは何のためにもそれを使うことにはなりませんでした。

関連する問題