JPEG2000読み込み

AndroidでJPEG2000を読み込む必要があったので調べた結果、jj2000を使うことにしました。しかし、JJ2000ライブラリは、いろいろな派生物があってどれを使っていいか悩みました。

自分は、Androidで使えるBitmapが取り出せるもので、
NFC_DriversLicenseReader のJJ2000を使うことにしました。jj2000自体はjj2000ライセンス(?)ですが、NFC_DriverLicenseReaderはMIT License です。

まず、 ダウンロードしてjj2000フォルダをプロジェクトにコピーします。私は、以下の場所にコピーしました。

ただ、このまま使うとBitmapが白黒になるので、一部修正します。
jj2000/j2k/decoder/Decoder.javaの378行のコメントを外し、次の行をコメントアウトします

      ImgWriterBitmap imwriter = new ImgWriterBitmapPPM(decodedImage,0,1,2);
//      ImgWriterBitmap imwriter = new ImgWriterBitmapPPM(decodedImage,0,0,0);	//モノクロ対応 2012.08.06 TK

あとは、

    val buffer = File("/sdcard/test.jp2").readBytes()
    val bmp = JJ2000Frontend.decode(buffer)

これでBitmapが得られます。参考に、MainActivityを次のように作って確認しました。

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import jj2000.JJ2000Frontend
import kotlinx.android.synthetic.main.activity_main.*
import java.io.File
import java.io.RandomAccessFile

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val buffer = File("/sdcard/test.jp2").readBytes()
        val bmp = JJ2000Frontend.decode(buffer)
        imageView.setImageBitmap(bmp)
    }
}

以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です