OhosPixelMapCreateOps中的pixelFormat的枚举设置成3和4有一样的效果。

OhosPixelMapCreateOps中的pixelFormat的枚举设置成3和4有一样的效果。

HarmonyOS
2024-05-08 23:30:22
浏览
收藏 0
回答 2
待解决
回答 2
按赞同
/
按时间
morning_dxm

排列不影响显示效果,解码的时候设置为3,4,显示效果是一样的。目前使用buffer创建pixelmap传入只能传bgra,如果传rgba,内部处理时会当作bgra来处理最后导致图片偏色。

分享
微博
QQ
微信
回复
2024-05-09 14:38:56
wx643cd9e216bee
void GPURenderThread::readPixelFromFBO() { 
    std::lock_guard<std::mutex> lk(mutex);
    void *pixels = new GLubyte[imageWidth * imageHeight * 4];
    glReadPixels(0, 0, imageWidth, imageHeight, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
    //使用NativeImage把相机预览流更新到纹理后,从FBO读出来的YUV420SP格式的相机预览帧已经被转成RGBA格式
    //但是buffer如果设置解码成RGBA的PixelMap会偏色
    OpenGlUtils::ConvertRGBAtoBGRA( pixels, imageWidth * imageHeight);
    filterOutputCb->pixelMap.ops.width = imageWidth;
    filterOutputCb->pixelMap.ops.height = imageHeight;
    filterOutputCb->pixelMap.ops.alphaType = 0;
    filterOutputCb->pixelMap.ops.pixelFormat = 3;//pixelFormat设3或4都一样,貌似固定解码成BGRA
    if (filterOutputCb->pixelMap.buffer) {
        delete[] filterOutputCb->pixelMap.buffer;
        filterOutputCb->pixelMap.buffer = nullptr;
    }
    filterOutputCb->pixelMap.buffer = pixels;
    filterOutputCb->OnCallbackAsync();
}

我也碰到了类似的问题,pixelFormat设置为RGBA的时候偏色

分享
微博
QQ
微信
回复
7天前
相关问题
XComponent 怎么设置成透明
277浏览 • 1回复 待解决
如何将AbilityUI界面设置成透明
351浏览 • 1回复 待解决
鸿蒙安卓有什么不一样
4574浏览 • 3回复 待解决
Web组件获取高度不一样
166浏览 • 1回复 待解决
各位大佬,SDK4SDK3相比啥区别?
9823浏览 • 4回复 已解决
JS swiper 怎么像list一样动态添加item?
4789浏览 • 1回复 待解决
如何设置图片高斯模糊效果
740浏览 • 1回复 待解决