繁体   English   中英

如何将 ByteBuffer 转换为位图图像?

[英]How to convert ByteBuffer to Bitmap Image?

我正在创建一个使用 TensorFlow Lite 模型的图像超分辨率应用程序。 该模型以 ByteBuffer 的形式给出输出 Image,我将 ByteBuffer 转换为 Bitmap。 接下来,我显示此位图,但没有显示任何内容。 我正在使用的代码可以在下面看到:

            ByteBuffer out = ByteBuffer.allocate(4 * 384 * 384 * 3);
            tflite.run(byteBuffer,out);

            byte[] imageBytes= new byte[out.remaining()];
            out.get(imageBytes);
            final Bitmap outPut_Image = BitmapFactory.decodeByteArray(imageBytes,0,imageBytes.length);
            //Toast.makeText(this,tflite.toString(),Toast.LENGTH_LONG).show();
            Toast.makeText(this, "Working",Toast.LENGTH_LONG).show();
            ImageView imageView = (ImageView) this.findViewById(R.id.imageView2);
            imageView.setImageBitmap(outPut_Image);

请告诉我我在这里做错了什么。

BitmapFactory.decodeByteArray() 用于压缩图像数据,例如 JPEG。

对于原始 RGB888 数据,我认为您应该先将其转换为 ARGB_8888 格式。 之后,您可以使用以下代码段来创建 Bitmap 对象。

    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    bitmap.copyPixelsFromBuffer(buffer);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM