HarmonyOS 是否有自定义图像分辨率的接口?

我们是个有直播视频流的App,比如从摄像头设备端传输过来的视频分辨率是19201024,当用户在app上操作截图,app端保存到手机端的图片分辨率是否能够自定义呢?比如原来是19201024,保存截图后,分辨率为1080*640。请提供一下思路。


HarmonyOS
2024-11-13 09:24:42
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

​您可以尝试下将截图后的照片,通过压缩至特定大小(分辨率)后再返回储存数据,谢谢。

可以先创建pixelMap,获取imageInfo,计算和目标宽高的压缩比,调用pixelMap的scale方法压缩,然后在编码压缩后的pixelmap,具体参考以下代码:​

// path为已获得的沙箱路径 
const imageSource: image.ImageSource = image.createImageSource(path2); 
let decodingOptions: image.DecodingOptions = { 
    editable: true, 
    desiredPixelFormat: 3, 
} 
this.pixelmap=await imageSource.createPixelMap(decodingOptions); 
let imageInfo = await this.pixelmap.getImageInfo(); 
//计算压缩比 
let scaleX : number = 500/imageInfo.size.width; 
let scaleY : number = 500/imageInfo.size.height; 
this.pixelmap.scale(scaleX,scaleY,(err : BusinessError) => { 
    if (err) { 
        console.error("Failed to scale pixelmap."); return; 
    } else { 
        console.info("Succeeded in scaling pixelmap."); 
    } 
}); 
 
const imagePackerApi = image.createImagePacker(); 
let packOpts: image.PackingOption = { format: "image/jpeg", quality: 90 }; 
// const context: Context = getContext(this); 
// const path: string = context.cacheDir + “/pixel88.jpg”; 
// let file = fs.openSync(path, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE); 
imagePackerApi.packing( this.pixelmap, packOpts).then((data:ArrayBuffer) => { 
    console.info("Succeeded in packing the image."); 
}).catch((error: BusinessError) => { 
    console.error("Failed to pack the image. And the error is: " + error); 
})
分享
微博
QQ
微信
回复
2024-11-13 18:00:03
相关问题
HarmonyOS 手机分辨率怎么获取?
164浏览 • 1回复 待解决
如何设置图片显示分辨率
442浏览 • 1回复 待解决
如何在图片显示分辨率
1751浏览 • 1回复 待解决
HarmonyOS 如何获取屏幕分辨率
509浏览 • 1回复 待解决
获取鸿蒙分辨率高度不对
5999浏览 • 1回复 待解决
应用图标分辨率规范问题
990浏览 • 1回复 待解决
OpenGL无法正常渲染某些分辨率YUV数据
405浏览 • 0回复 待解决
HarmonyOS 自定义接口如何使用?
146浏览 • 1回复 待解决
HarmonyOS 是否支持自定义装饰器?
246浏览 • 1回复 待解决
HarmonyOS ArkWeb是否支持自定义UserAgent
389浏览 • 1回复 待解决
CounterComponent样式是否可以自定义
218浏览 • 1回复 待解决
是否支持自定义装饰器
2099浏览 • 1回复 待解决