1.图片开发概述
应用开发中的图片开发是对图片像素数据进行解析、处理、构造的过程,达到目标图片效果,主要涉及图片解码、图片处理、图片编码等。
- 获取图片:通过应用沙箱等方式获取原始图片。
- 创建ImageSource实例:ImageSource是图片解码出来的图片源类,用于获取或修改图片相关信息。
- 图片解码:通过ImageSource解码生成PixelMap。
- 图片处理:对PixelMap进行处理,更改图片属性实现图片的旋转、缩放、裁剪等效果。然后通过Image组件显示图片。
- 图片编码:使用图片打包器类ImagePacker,将PixelMap或ImageSource进行压缩编码,生成一张新的图片。
2.图片解码
图片解码指将所支持格式的存档图片解码成统一的PixelMap,以便在应用或系统中进行图片显示或图片处理。鸿蒙当前支持的存档图片格式包括JPEG、PNG、GIF、RAW、WebP、BMP、SVG。
- 全局导入Image模块
import image from '@ohos.multimedia.image';
- 通过文件路径创建ImageSource
const context : Context = getContext(this);
const filePath : string = context.cacheDir + '/test.jpg';
// path为已获得的沙箱路径
const imageSource : image.ImageSource = image.createImageSource(filePath);
- 通过文件描述符fd创建ImageSource
const context = getContext(this);
const filePath = context.cacheDir + '/test.jpg';
const file : fs.File = fs.openSync(filePath, fs.OpenMode.READ_WRITE);
const fd : number = file?.fd;
// fd为已获得的文件描述符
const imageSource : image.ImageSource = image.createImageSource(fd);
- 通过缓冲区数组创建ImageSource
const context : Context = getContext(this);
// 获取resourceManager资源管理器
const resourceMgr : resourceManager.ResourceManager = context.resourceManager;
resourceMgr.getRawFileContent('test.jpg').then((fileData : Uint8Array) => {
console.log("Succeeded in getting RawFileContent")
// 获取图片的ArrayBuffer
const buffer = fileData.buffer;
}).catch((err : BusinessError) => {
console.error("Failed to get RawFileContent")