阅读(1101)
赞(8)
鸿蒙OS 图像编码开发指导
2020-09-17 09:22:37 更新
场景介绍
图像编码就是将 PixelMap 图像编码成不同存档格式图片,用于后续其他处理,比如保存、传输等。当前仅支持 JPEG 格式。
接口说明
ImagePacker 主要用于图像编码。
接口名 | 描述 |
---|---|
create() | 创建图像打包器实例。 |
initializePacking(byte[] data, PackingOptions opts) | 初始化打包任务,将字节数组设置为打包后输出目的。 |
initializePacking(byte[] data, int offset, PackingOptions opts) | 初始化打包任务,将带偏移量的字节数组设置为打包后输出目的。 |
initializePacking(OutputStream outputStream, PackingOptions opts) | 初始化打包任务,将输出流设置为打包后输出目的。 |
addImage(PixelMap pixelmap) | 将 PixelMap 对象添加到图像打包器中。 |
addImage(ImageSource source) | 将图像数据源 ImageSource 中图像添加到图像打包器中。 |
addImage(ImageSource source, int index) | 将图像数据源 ImageSource 中指定图像添加到图像打包器中。 |
finalizePacking() | 完成图像打包任务。 |
release() | 释放对象关联的本地资源。 |
开发步骤
- 创建图像编码 ImagePacker 对象。
ImagePacker imagePacker = ImagePacker.create();
- 设置编码输出流和编码参数。设置 format 为编码的图像格式,当前支持 jpeg 格式。设置 quality 为图像质量,范围从 0-100,100 为最佳质量。
FileOutputStream outputStream = new FileOutputStream("/path/to/packed.file");
ImagePacker.PackingOptions packingOptions = new ImagePacker.PackingOptions();
packingOptions.format = "image/jpeg";
packingOptions.quality = 90;
boolean result = imagePacker.initializePacking(outputStream, packingOptions);
- 添加需要编码的 PixelMap 对象,进行编码操作。
result = imagePacker.addImage(pixelMap);
long dataSize = imagePacker.finalizePacking();
- 编码输出完成后,可以进行后续处理,比如保存、传输等。