HarmonyOS 图片解码咨询

后置摄像头拍出来的照片,使用RGBA_8888进行解码,再绑定到openGL纹理上,显示是正常前,置摄像头拍出来的照片,同样的逻辑,图片会撕裂。想请教一下前置摄像头和后置摄像头拍出来的照片有什么不一样。解码逻辑如下:

const file = await fs.open(uri, fs.OpenMode.READ_ONLY);
const imageSource = image.createImageSource(file.fd);
const size = imageSource.getImageInfoSync(0).size
const pixelMap =
  await imageSource.createPixelMap({
    desiredPixelFormat: image.PixelMapFormat.RGBA_8888
  });
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

创建纹理逻辑如下:

auto createPixelStatus = OHOS::Media::OH_AccessPixels(env, pixelMap, &data);
if (createPixelStatus != OHOS::Media::OHOS_IMAGE_RESULT_SUCCESS) {
  OH_LOG_INFO(LOG_APP, "createTextureFail.");
  return 0;
}
GLuint texture = 0;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
glBindTexture(GL_TEXTURE_2D, 0);
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

换成BGRA_8888解码,图片可以正常显示,但是颜色通道不对。

HarmonyOS
2024-12-25 10:30:10
758浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
shlp

1、通过OhosPixelMapInfos.rowSize获取stride。

2、gl绑定纹理时带上stride,glPixelStorei(GL_UNPACK_ROW_LENGTH, stride);注意:这里的第二个参数是以像素为单位的,而rowSize是以字节为单位的。

分享
微博
QQ
微信
回复
2024-12-25 13:21:02


相关问题
HarmonyOS 音频编解码问题咨询
904浏览 • 1回复 待解决
HarmonyOS OH_AVCodec硬解码流程问题咨询
1647浏览 • 1回复 待解决
HarmonyOS 图片上传问题咨询
690浏览 • 1回复 待解决
图片解码能力支持哪些格式
2743浏览 • 1回复 待解决
HarmonyOS Image加载本地图片咨询
1279浏览 • 1回复 待解决
图片解码支持的格式有哪些
2780浏览 • 1回复 待解决
HarmonyOS 关于GIF图片播放功能的咨询
625浏览 • 1回复 待解决
HarmonyOS保存图片到系统相册问题咨询
1477浏览 • 1回复 待解决
HarmonyOS视频解码问题
1426浏览 • 1回复 待解决
HarmonyOS uri编码解码问题
613浏览 • 1回复 待解决
HarmonyOS hevc格式视频解码
1209浏览 • 1回复 待解决
HarmonyOS 视频编解码问题
1007浏览 • 1回复 待解决
HarmonyOS CBOR编解码问题
1395浏览 • 1回复 待解决
HarmonyOS native中svg解码异常
944浏览 • 1回复 待解决
HarmonyOS AudioVivid音频解码和渲染
741浏览 • 1回复 待解决