如何将YUV_420_888图像转换为位图[重复]

2024-02-20

我正在开发 AR 项目,我需要捕获当前帧并将其保存到图库。我可以使用AR core中的Frame类获取图像,但图像的格式是YUV_420_888。我已经尝试了很多解决方案来将其转换为位图,但无法解决它。


这就是我转换为 jpeg 的方法。

public Bitmap imageToBitmap(Image image, float rotationDegrees) {

    assert (image.getFormat() == ImageFormat.NV21);

    // NV21 is a plane of 8 bit Y values followed by interleaved  Cb Cr
    ByteBuffer ib = ByteBuffer.allocate(image.getHeight() * image.getWidth() * 2);

    ByteBuffer y = image.getPlanes()[0].getBuffer();
    ByteBuffer cr = image.getPlanes()[1].getBuffer();
    ByteBuffer cb = image.getPlanes()[2].getBuffer();
    ib.put(y);
    ib.put(cb);
    ib.put(cr);

    YuvImage yuvImage = new YuvImage(ib.array(),
            ImageFormat.NV21, image.getWidth(), image.getHeight(), null);

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    yuvImage.compressToJpeg(new Rect(0, 0,
            image.getWidth(), image.getHeight()), 50, out);
    byte[] imageBytes = out.toByteArray();
    Bitmap bm = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);
    Bitmap bitmap = bm;

    // On android the camera rotation and the screen rotation
    // are off by 90 degrees, so if you are capturing an image
    // in "portrait" orientation, you'll need to rotate the image.
    if (rotationDegrees != 0) {
      Matrix matrix = new Matrix();
      matrix.postRotate(rotationDegrees);
      Bitmap scaledBitmap = Bitmap.createScaledBitmap(bm,
              bm.getWidth(), bm.getHeight(), true);
      bitmap = Bitmap.createBitmap(scaledBitmap, 0, 0,
              scaledBitmap.getWidth(), scaledBitmap.getHeight(), matrix, true);
    }
    return bitmap;
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将YUV_420_888图像转换为位图[重复] 的相关文章

随机推荐

  • 如何使用 VBA 在 IE11 中自动弹出“另存为”对话框?

    我正在尝试下载一些有关碳排放的数据 我可以通过 URL 预加载包含相关设置的页面 它加载正常 我可以通过其 ID 单击确定按钮 然后在底部看到 IE11 打开 保存 取消对话框 我已经尝试了使用 FindWindows 32770 的所有建
  • CKAN 安装:粘贴错误

    在 OSX 10 9 上本地安装 CKAN 基于http docs ckan org en latest maintaining installing install from source html http docs ckan org
  • HttpClientHandler / HttpClient 内存泄漏

    我有 10 150 个长期存在的类对象 它们调用使用 HttpClient 执行简单 HTTPS API 调用的方法 PUT 调用示例 using HttpClientHandler handler new HttpClientHandle
  • 如何检测一种类型是否是另一种类型的可见基础?

    If I do struct A struct C private A typedef char yes 1 typedef char no 2 template
  • 如何在Python中比较多个元组列表?

    我如何比较像这样的多个元组列表 1 2 3 6 5 3 1 5 3 5 2 1 1 8 3 9 输出应该是 1 2 1 5 1 8 3 6 3 5 3 9 这意味着我只想要那些值x axis价值与他人相匹配 5 3 和 2 1 应该被丢弃
  • 我向我的项目添加了一个新类,并收到一条错误消息“Program.Main() 有多个条目”。为什么?

    问题是 在我添加新类后 当我构建解决方案时出现了错误 有什么问题吗 在 Form1 中 我还没有任何代码 我刚刚添加了一个新课程 using System using System Collections Generic using Sys
  • React-native 解码的 Base64 编码字符串

    我尝试在 React Native 中解码 Base64 编码的字符串标记 atob 不起作用 并且像 js base64 这样的库无法解决问题 有人有解决办法吗 我发现一些简单的方法对我有用 与节点相同的 api 安装缓冲器 yarn a
  • 从 Azure Blob 存储读取文件

    我想从 azure 存储中读取 PDF 文件字节 因为我有一个文件路径 https hostedPath pdf 1001 12 Jun 2012 18 39 05 594 pdf 那么是否可以通过直接传递路径名来从 blob 存储中读取内
  • DDD是否适合所有类型的应用?

    对于这里和其他论坛提出的很多问题 我看到的一个常见反应是 您不需要为此执行 DDD 它是一个简单的 CRUD 应用程序 DDD 是一种过度设计 嗯 我是 DDD 的新手 我觉得 DDD 中有很多元素具有普遍吸引力并且可以全面使用 无论您的应
  • Powershell 中的本机 .tar 提取

    我有一个 tar gz我需要提取的文件 我已经处理了gunzip位GzipStream对象来自System IO Compression 但我找不到任何用于处理该命名空间中的 tarball 的内容 有没有办法处理 tarPowershel
  • logrotate 日期格式似乎不支持 %H:%M:%S

    我是 logrotate 的新手 当配置到 dateformat 属性时 logrotate 似乎不支持 strftime H 这是配置 daily rotate 2 size 3M missingok notifempty dateext
  • 在 Prolog 中交换列表的连续项

    我正在尝试编写可以交换列表中两个元素的 Prolog 代码 但前提是它们是彼此连续 那是 conseq swap d e a g d e f X 应该给出 X a g e d f d 和 e 是连续的 However conseq swap
  • 在单个事务中发送多个 SQL 命令

    我有一个巨大的清单INSERT INTO 字符串 目前我运行它们 using SqlConnection connection new SqlConnection connectionString connection Open forea
  • 按钮位于画布中央

    我有 4 个重叠的画布 充当图层 绝对定位并水平和垂直居中 在此画布上 我想在画布中心的一列中覆盖四个 HTML CSS 按钮 用于游戏菜单 我是 CSS 和 HTML 的新手 我一直无法弄清楚如何让按钮在绝对定位的画布上居中 我怎样才能做
  • 通用扩展类并实现接口[重复]

    这个问题在这里已经有答案了 这听起来可能是一个奇怪的问题 但是如何定义一个必须扩展类并实现接口的泛型呢 我目前有一个具有以下原型的通用函数 public static
  • cudaArray 与设备指针

    我对设备指针和设备指针的预期用途之间的区别感到困惑cudaArray结构 有人可以解释一下为什么我会使用其中一种而不是另一种吗 我的基本问题是 在浏览文档并阅读 CUDA by Example 一书之后 我不明白 API 设计者的意图 从我
  • 使用 Sprite Kit 创建自定义滑块 - 如何传递@selector?

    我正在开发的 Sprite Kit 游戏使用自定义滑块充当颜色选择器 颜色是从滑块轨道图形中选取的 这是一个UIImage包含梯度 我研究过使用定制的UISlider 但是标准的 IOS UI 控件不能很好地与 Sprite Kit 的场景
  • 如何通过 python 脚本在 ArcGIS 中添加 shapefile?

    我正在尝试使用 Python 自动执行 ArcGIS Desktop 通常使用 ArcMap 中的各种任务 并且我一直需要一种将形状文件添加到当前地图的方法 然后对其做一些事情 但那是另一个故事 到目前为止我能做的最好的就是添加一个laye
  • AngularJS ng-options 将数据类型添加到选项的值

    尝试使用最新版本 1 5 8 的 AngularJS 和 ng options 来填充下拉列表 问题是它添加了数据类型和值 如下所示
  • 如何将YUV_420_888图像转换为位图[重复]

    这个问题在这里已经有答案了 我正在开发 AR 项目 我需要捕获当前帧并将其保存到图库 我可以使用AR core中的Frame类获取图像 但图像的格式是YUV 420 888 我已经尝试了很多解决方案来将其转换为位图 但无法解决它 这就是我转