java - 三星 S9+ 和 RenderScript 内在函数

标签 java android c++ image-processing android-renderscript

我使用此脚本将 YUV_420_888 图像转换为位图。我的三星 S8 一切正常。我在 S9+ 上尝试了 RenderScript,结果是黑色位图。没有错误,没有警告,只是一个黑色位图。我将 S9+ 更新为 Android Pie,但一切仍然是黑色的。我真的无法解释 S9+ 设备出了什么问题...

        int W = mImage.getWidth();
        int H = mImage.getHeight();

        Image.Plane Y = mImage.getPlanes()[0];
        Image.Plane U = mImage.getPlanes()[1];
        Image.Plane V = mImage.getPlanes()[2];

        int Yb = Y.getBuffer().remaining();
        int Ub = U.getBuffer().remaining();
        int Vb = V.getBuffer().remaining();

        byte[] data = new byte[Yb + Ub + Vb];

        Y.getBuffer().get(data, 0, Yb);
        V.getBuffer().get(data, Yb, Vb);
        U.getBuffer().get(data, Yb + Vb, Ub);

        RenderScript rs = RenderScript.create(Main2Activity.this);
        ScriptIntrinsicYuvToRGB yuvToRgbIntrinsic = ScriptIntrinsicYuvToRGB.create(rs, Element.U8_4(rs));

        Type.Builder yuvType = new Type.Builder(rs, Element.U8(rs)).setX(data.length);
        Allocation in = Allocation.createTyped(rs, yuvType.create(), Allocation.USAGE_SCRIPT);

        Type.Builder rgbaType = new Type.Builder(rs, Element.RGBA_8888(rs)).setX(W).setY(H);
        Allocation out = Allocation.createTyped(rs, rgbaType.create(), Allocation.USAGE_SCRIPT);

        final Bitmap bmpout = Bitmap.createBitmap(W, H, Bitmap.Config.ARGB_8888);

        in.copyFromUnchecked(data);

        yuvToRgbIntrinsic.setInput(in);
        yuvToRgbIntrinsic.forEach(out);
        out.copyTo(bmpout);

**编辑:**我将 mImage 的分辨率更改为 2.960 x 1.440 像素,但遇到了一些崩溃。当应用程序崩溃时,我再次安装了应用程序,当应用程序崩溃时,显示了位图。我认为问题不在于代码。我认为 S9+ 在正确运行渲染脚本时存在一些问题。

最佳答案

S9+ 似乎在我放置在 ImagView 上的 TextureView 上出现了问题。删除TextureView后,应用程序工作得很好。

关于java - 三星 S9+ 和 RenderScript 内在函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58720472/

相关文章:

android - 引用真北计算加速度

c++ - Qt:服务器从套接字接收数据

c++ - 为什么链接器不提示多个函数定义(仅使用模板函数)?

Java UDP 通信小程序到 UDP 服务器

java - Java : Path does not chain with any of the trust anchors 上的 SSL 异常

java - 从 OMElement 获取输入流

Android Spinner onItemSelected 结果到 TextView ?

android - 搜索用于改进 Android 应用程序 UI 的库

java - 仅在一个浏览器中运行 java web 应用程序

c++ - 标准布局和尾部填充