鸿蒙开发:13-在线图片转PixelMap

35 阅读1分钟

在线图片转PixelMap

使用rcp请求,rcp.createSession最多创建16个session实例,所以在每个成功后记得要close。

import { rcp } from '@kit.RemoteCommunicationKit';
import { image } from '@kit.ImageKit';
import { BusinessError } from '@kit.BasicServicesKit';

export default class ImageUtil {
  //加载网络图片并转换成PixelMap
  static requestImageUrl(url: string): Promise<image.PixelMap> {
    return new Promise<image.PixelMap>((resolve, reject) => {
      let session = rcp.createSession();
      session
        .get(url)
        .then((response) => {
          console.info(`Succeeded in getting the response ${response}`);
          let imgData: ArrayBuffer = response.body as ArrayBuffer
          console.info(`request image success, size: ${imgData.byteLength}`);
          let imgSource: image.ImageSource = image.createImageSource(imgData);
          imgSource.createPixelMap().then((pixelMap: PixelMap) => {
            console.error('image createPixelMap success');
            resolve(pixelMap)
            session.close();
          }).catch((err: BusinessError) => {
            console.error(`err: err code is ${err.code}, err message is ${JSON.stringify(err)}`);
            reject(err)
            session.close();
          });
        })
        .catch((err: BusinessError) => {
          console.error(`err: err code is ${err.code}, err message is ${JSON.stringify(err)}`);
          reject(err)
          session.close();
        })
    })
  }
}