HarmonyOS中图片文件读取的RGB 通道数据与其它平台有差异?

HarmonyOS中图片文件读取的RGB 通道数据与其它平台有差异?对一张图片,读取其 RGB 通道数据,HarmonyOS读取的数据却是 RGB 160,177,195,与其他平台有差异,详细代码如下:

context.resourceManager.getRawFileContent('test.jpg').then(value => { 
  let buf = new ArrayBuffer(value.length) 
  let tempBuffer = new Uint8Array(buf) 
  for (let i = 0; i < value.length; i++) { 
    tempBuffer[i] = value[i] 
  } 
  const imageSource = image.createImageSource(buf) 
  // Set the image format to BGRA_8888. 
  imageSource.createPixelMap({desiredPixelFormat : image.PixelMapFormat.RGBA_8888}) 
    .then(async pixelMapObj => { 
      pixelMapObj.getImageInfo().then(info => { 
        let resizeH = info.size.height 
        let resizeW = info.size.width 
        const readBuffer = new ArrayBuffer(pixelMapObj.getPixelBytesNumber()) 
        pixelMapObj.readPixelsToBuffer(readBuffer, (err, res)=> { 
          if (err) { 
            hilog.info(0x0000, 'HiAIFoundationDemo', 'Failed to read image pixel data.') 
            return 
          } else { 
            let dataArray = new Uint8Array(readBuffer) 
            // rt_normalized 
            let channel = 3 
            let inputData = new Float32Array(channel * resizeW * resizeH) 
            for (let i = 0; i < resizeW * resizeH; i++) 
            { 
              let m1 = dataArray[i * 4 + 0]; 
              let m2 = dataArray[i * 4 + 1]; 
              let m3 = dataArray[i * 4 + 2]; 
              let r = (m1/255.0 - 0.485)/0.229; 
              let g = (m2/255.0 - 0.456)/0.224; 
              let b = (m3/255.0 - 0.406)/0.225; 
              inputData[i] = r; 
              inputData[resizeW * resizeH + i] = g; 
              inputData[resizeW * resizeH * 2 + i] = b; 
            } 
          }) 
        }) 
      }) 
    })
阅读 552
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题