首页 > 解决方案 > 将 ByteBuffer 转换为 Image 会产生嘈杂的输出

问题描述

我正在尝试将 ByteBuffer 转换为位图图像,但我得到的输出很嘈杂,即不是我所期望的。我的代码如下:

private Bitmap getOutputImage(ByteBuffer output){
        output.rewind();

        int outputWidth = 384;
        int outputHeight = 384;
        Bitmap bitmap = Bitmap.createBitmap(outputWidth, outputHeight, Bitmap.Config.RGB_565);
        int [] pixels = new int[outputWidth * outputHeight];
        for (int i = 0; i < outputWidth * outputHeight; i++) {
            //val a = 0xFF;
            //float a = (float) 0xFF;

            //val r: Float = output?.float!! * 255.0f;
            //byte val = output.get();
            float r = ((float) output.get()) * 255.0f;

            //val g: Float = output?.float!! * 255.0f;
            float g = ((float) output.get()) * 255.0f;

            //val b: Float = output?.float!! * 255.0f;
            float b = ((float) output.get()) * 255.0f;


            //pixels[i] = a shl 24 or (r.toInt() shl 16) or (g.toInt() shl 8) or b.toInt()
            pixels[i] = (((int) r) << 16) | (((int) g) << 8) | ((int) b);
        }
        bitmap.setPixels(pixels, 0, outputWidth, 0, 0, outputWidth, outputHeight);

        return bitmap;
    }

我得到的图像是

在此处输入图像描述

请告诉我这里有什么问题?

标签: javaandroidbitmapandroid-bitmapbytebuffer

解决方案


推荐阅读