HarmonyOS 图片二进制流jpeg格式转换

通过相册获取到图片URL但不知道图片的格式,服务器只接受jpeg格式的图片二进制流,获取的图片应该怎么转换?

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
shlp

获取图片信息demo:

function getPhoto(context: Context) {
  let atManager = abilityAccessCtrl.createAtManager();
  const permissions: Array<Permissions> = ['ohos.permission.READ_MEDIA', "ohos.permission.WRITE_MEDIA"];

  atManager.requestPermissionsFromUser(context, permissions).then(async (data) => { //需要用户允许授权图库权限
    let grantStatus: Array<number> = data.authResults;
    let length: number = grantStatus.length;
    for (let i = 0; i < length; i++) {
      if (grantStatus[i] === 0) { //用户同意权限之后进行的操作
        let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); //context为getContext获取
        console.info('albumGetAssetsDemoPromise');
        let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); //筛选条件
        let predicates1: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); //筛选条件
        let albumName: photoAccessHelper.AlbumKeys = photoAccessHelper.AlbumKeys.ALBUM_NAME;
        let title: photoAccessHelper.PhotoKeys = photoAccessHelper.PhotoKeys.TITLE;
        let albumFetchOptions: photoAccessHelper.FetchOptions = {
          fetchColumns: [],
          predicates: predicates
        };
        let fetchOption: photoAccessHelper.FetchOptions = {
          fetchColumns: ['title'],
          predicates: predicates1
        };
        const albumList: photoAccessHelper.FetchResult<photoAccessHelper.Album> =
          await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.ANY,
            albumFetchOptions); //获取满足条件的相册列表,如果没加筛选条件就是所有相册
        while (await albumList.isAfterLast() != null) {
          console.info('photoAsset displayName: 数量', albumList.getCount());
          let album: photoAccessHelper.Album = await albumList.getNextObject(); //获取下一个
          console.info('photoAsset displayName: ', album.albumName); //名字
          console.info('photoAsset displayName: ', album.albumSubtype); //名字
          console.info('photoAsset displayName:------------------------------------------------------- ')
          album.getAssets(fetchOption).then(async (albumFetchResult) => {
            while (!albumFetchResult.isAfterLast()) { //循环打印相册中的图片
              let photoAsset: photoAccessHelper.PhotoAsset = await albumFetchResult.getNextObject();
              let photoTitle = photoAsset.get(title);
              console.info(`xxxwidth is ${JSON.stringify(photoTitle)}`);
            }
            console.info('photoAsset displayName:------------------------------------------------------- ')
          }).catch((err: BusinessError) => {
            console.error('album getPhotoAssets failed with error: ' + err);
          });
        }
      } else {
        // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
        return;
      }
    }
    // 授权成功
  }).catch((err: BusinessError) => {
    console.error(`requestPermissionsFromUser failed, code is ${err.code}, message is ${err.message}`);
  })
}

imagesource后通过packing方法转成jpeg图片格式,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/image-decoding-V5

分享
微博
QQ
微信
回复
1天前
相关问题
如何直接加载二进制图片
3026浏览 • 1回复 待解决
HarmonyOS gzip二进制压缩和解压缩
1123浏览 • 1回复 待解决
HarmonyOS 二进制转16进制
209浏览 • 1回复 待解决
如何对二进制进行AES解密?
423浏览 • 1回复 待解决
HarmonyOS进制二进制方法
217浏览 • 1回复 待解决
jsbind--二进制包导入指导
956浏览 • 1回复 待解决
base目录的内容会被编译成二进制
191浏览 • 1回复 待解决
native层如何访问rawfile的二进制文件
2032浏览 • 1回复 待解决