【问题标题】:Rendering jp2(jpeg2000) to Imageview in android.将 jp2(jpeg2000) 渲染到 Android 中的 Imageview。
【发布时间】:2019-06-13 17:04:54
【问题描述】:

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

【问题讨论】:

    标签: android jpeg2000


    【解决方案1】:

    您可能已经以某种方式解决了它,但如果您仍在寻找解决方案,您可以尝试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】:

      您可以使用 OpenJpeg 库来解码 Jpeg2000。您可以使用编译库https://github.com/DimaArts/OpenJpegAndroid。它包含一个编码 jpeg2000 的示例。库支持解码器和编码器的 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);
      }
      

      【讨论】:

        【解决方案3】:

        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");
            }
        
        }
        

        【讨论】:

        • 感谢您的回复。但 Android SDK 不支持 BufferedImage 和 ImageIO。所以,请让我知道任何替代方案
        猜你喜欢
        • 1970-01-01
        • 2014-11-23
        • 2012-06-22
        • 2013-07-28
        • 1970-01-01
        • 1970-01-01
        • 2020-10-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多