gpt4 book ai didi

android - 如何在 Android 上将原始相机数据转换为位图

转载 作者:太空狗 更新时间:2023-10-29 16:37:15 26 4
gpt4 key购买 nike

我从库函数中获取类型为 byte[]、格式为 RGBA、大小为 640x480、每像素 4 个字节的原始相机数据 rawData。我需要将它转换为位图并显示在屏幕上的 ImageView 中。

我的做法是:

byte[] JPEGData = convertToJpeg(rawData, 640, 480, 80);
Bitmap bitmap = BitmapFactory.decodeByteArray(JPEGData , 0, JPEGData .length);
imageView.setImageBitmap(bitmap);

convertToJpeg() 函数是:

    public static byte[] convertToJpeg(byte[] buffer, int w, int h, int quality) {
YuvImage yuv_image = new YuvImage(buffer, ImageFormat.NV21, w, h, null);

Rect rect = new Rect(0, 0, w, h);
ByteArrayOutputStream output_stream = new ByteArrayOutputStream();
yuv_image.compressToJpeg(rect, quality, output_stream);

Bitmap sourceBmp = BitmapFactory.decodeByteArray(output_stream.toByteArray(), 0, output_stream.size());
Bitmap destBmp = Bitmap.createScaledBitmap(sourceBmp, (int) (w * 0.75), (int) (h * 0.75), true);

ByteArrayOutputStream pictureStream = new ByteArrayOutputStream();
destBmp.compress(CompressFormat.JPEG, quality, pictureStream);
byte[] pictureByteArray = pictureStream.toByteArray();

return pictureByteArray;
}

decodeByteArray() 调用后,我有 bitmap.getConfig() == ARGB_8888

但是,我在屏幕上看到的是一些困惑的图片,原始图片中有一些模糊的绿色形状。

这是怎么回事?

最佳答案

事实证明,解决方案很简单。无需转换为 JPEG。

Bitmap bm = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
bm.copyPixelsFromBuffer(ByteBuffer.wrap(rawData));

关于android - 如何在 Android 上将原始相机数据转换为位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25505973/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com