2011-08-25 3 views
3

ネイティブコードを使用しています。ピクセルのバッファ(int *バッファなど)があります。特定の幅、高さのバッファからandroid.util.Bitmapインスタンスを作成したいと思います。Androidのビットマップandroid.graphics.Bitmapのインスタンスを作成するネイティブAPI

現在、バッファをJavaに戻し、android.graphics.Bitmap.createBitmap()を使用してBitmapインスタンスを作成します。しかし、それは効率的ではないようだと私の電話(少ないリソース)でOutOfMemoryExceptionをスローしますが、タブレット(より多くのリソース)で動作します。

質問:ビットマップインスタンスをネイティブに作成する(つまり、Cでそのようなインスタンスを作成し、JNIインターフェイスを使用してJavaでビットマップとして返​​す)ことはできますか?

+0

申し訳ありませんが、あなたはどのようにネイティブコードからバッファを渡し、Javaでビットマップを作成できますか? – 4ntoine

答えて

1

ビットマップのサイズはどれくらいですか?それがJavaでOOMを投げた場合、Cから戻す試みはおそらく同じことになるでしょう - それでもJavaメモリーを消費する必要があります。ピクセルあたりのスペースが少ないビットマップ形式(RGB_565、ARGB_4444など)を考えてみましょう。

+0

私のデータには約3000 x 5000ピクセルのビットマップが含まれています。私はBitmap.Configの違いを試してみました。 –

+0

それはかなり大きいです。あなたは全体を描くわけではないのですか?どうにかしてC言語で切り詰め、Javaに必要なものだけをJavaに戻すことを考えてみましょう。 –

+0

実際、ズーム/パン機能を使って誰の画像を表示しますか?私は(ネイティブコードで)スケールダウンしようとしましたが、それは画質の低下で動作します。画像をビットマップオブジェクトにネイティブコードで直接変換する方法はありますか? –

関連する問題