image.createPixelMap的option中的pixelMapFormat没有按预期生效

简单示例代码:

@State showImage: Resource | image.PixelMap = $r(“app.media.holder”) 
 
Image(this.showImage) 
  .width(50) 
  .height(50) 
  .onClick(() => {this.showPixelMap()}) 
 
async showPixelMap() { 
  let pixelArray: number[] = []; 
  for(let i = 0; i < 50 * 50; i++) { 
    pixelArray.push(255, 0, 0, 255); 
  } 
  let pixelBuffer = pixelArray.buffer as Object as ArrayBuffer; 
  let opt: image.InitializationOptions = { 
    size: {width: 50, height:50}, 
    pixelFormat: image.PixelMapFormat.RGBA_8888, 
    editable: true; 
  } 
  this.showImage = await image.createPixelMap(pixelBuffer, opt); 
}

点击图片后,Image显示蓝色将opt中的pixelFormat改为image.PixelMapFormat.BGRA_8888仍显示蓝色

另外pixelArray.push(255, 0, 0, 255);改为pixelArray.push(255, 0, 0),pixelFormat改为image.PixelMapFormat.RGB_888显示白色?

HarmonyOS
2024-05-08 23:27:25
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
wjmfzsz

createPixelMap接口当前对所有的输入流按BGRA格式处理,所以会出现问题中显示为蓝色的问题。

同样地,当pixelArray.push(255, 0, 0, 255)改为pixelArray.push(255, 0, 0),pixelFormat改为image.PixelMapFormat.RGB_888后其实显示的不是白色,而是透明色。实际处理方式为BGRA,pixelArray.push(255, 0, 0, 0)

虽然这个接口按BGRA进行处理,但是后续操作处理时,还是根据指定的PixelFormat进行的。

分享
微博
QQ
微信
回复
2024-05-09 14:37:08
相关问题
Native Image模块API-OH_PixelMap_CreatePixelMap
766浏览 • 1回复 待解决
在嵌套组件Scroll不生效
999浏览 • 1回复 待解决
textfield截断属性不生效
1571浏览 • 1回复 待解决
求助:devecostudioxml没有color preview
4903浏览 • 2回复 待解决
ArkTS写法是否可以TS/JS逻辑理解
877浏览 • 1回复 待解决
textOverflow怎么字母截断
416浏览 • 1回复 待解决
JSUI按钮 toolbar下背景色怎么去掉
4240浏览 • 1回复 待解决