将jp2(jpeg2000)渲染到android中的Imageview。

时间:2017-07-10 07:18:45

标签: android jpeg2000

我从服务器端获取base64格式的jp2。我能够将jpg转换为jp2形式的ImageMagick库并发送到服务器。他们可以使用Buffered Image和ImageIo将其转换为jpg。 但是我没有想到将jp2转换为jpg并在Imageview中渲染。 希望得到任何帮助。提前谢谢。

3 个答案:

答案 0 :(得分:0)

您可以使用OpenJpeg库来解码Jpeg2000。您可以使用已编译的库https://github.com/DimaArts/OpenJpegAndroid。它包含编码jpeg2000的示例。 Library支持解码器和编码器的PNG输入和输出格式。 试试这个:

OpenJPEGJavaDecoder decoder = new OpenJPEGJavaDecoder();
String[] params2 = new String[4];
params2[0] = "-i";
params2[1] = mInputPath; // path to jp2
params2[2] = "-o";
params2[3] = mOutputPath // path to png
decoder.decodeJ2KtoImage(params2);

如果您使用的是JNI:

public int decodeJ2KtoImage(String[] parameters) {
    return internalDecodeJ2KtoImage(parameters);
}

答案 1 :(得分:0)

您可能已经以某种方式解决了该问题,但是如果您仍在寻找解决方案,可以尝试使用JP2 for Android库。 (免责声明:我写了库。)它基于OpenJPEG,就像DimaArts的响应一样,但是它具有更好的Java接口。

将以下依赖项添加到您的build.gradle文件中:

implementation 'com.gemalto.jp2:jp2-android:1.0'

,并使用以下代码对JP2进行解码:

byte[] jp2Data = ...; //get the JP2 data from somewhere
Bitmap bmp = new JP2Decoder(jp2Data).decode();
imgView.setImageBitmap(bmp);

答案 2 :(得分:-1)

https://stackoverflow.com/a/39103107/2760681

尝试此代码
private static void convertImage(int randNum) throws IOException {
    try {
        File foundFile = new File("c:\\images\\" + randNum + ".jp2");   
        BufferedImage background = ImageIO.read(foundFile);
        ImageIO.write(background, "jpg", new File("c:\\images\\" + randNum + ".jpg"));
        System.out.println("jpg file is generated");
    } catch (Exception e) {
        // TODO: handle exception
        System.out.println("No file " + randNum +".jp2 found");
    }

}