HarmonyOS NEXT图片选择和下载保存案例

本文档详细介绍了如何在HarmonyOS中进行图片选择、网络图片下载及保存到手机相册的操作。通过`transcodePixelMap`函数将ArrayBuffer转换为PixelMap类型,使用`saveImage`和`pickerSave`方法实现图片保存,涉及photoAccessHelper、picker组件和文件系统操作。
摘要由CSDN通过智能技术生成
  }
})

1. 使用createPixelMap方法将获取到的图片数据转换成pixelmap展示到页面中



// 将ArrayBuffer类型的图片装换为PixelMap类型
transcodePixelMap(data: http.HttpResponse) {
let code: http.ResponseCode | number = data.responseCode;
if (ResponseCode.ResponseCode.OK === code) {
let imageData: ArrayBuffer = data.result as ArrayBuffer;
let imageSource: image.ImageSource = image.createImageSource(imageData);

class tmp {
  height: number = 100;
  width: number = 100;
};

let options: Record<string, number | boolean | tmp> = {
  'alphaType': 0, // 透明度
  'editable': false, // 是否可编辑
  'pixelFormat': 3, // 像素格式
  'scaleMode': 1, // 缩略值
  'size': { height: 100, width: 100 }
}; // 创建图片大小

imageSource.createPixelMap(options).then((pixelMap: PixelMap) => {
  this.image = pixelMap;
  this.isShow = true
});

}
}


1. 将图片保存到图库或者用户选择的路径


	* 使用getPhotoAccessHelper、createAsset、fs.open、fs.write等接口将数据存到本地图库中

async saveImage(buffer: ArrayBuffer | string): Promise {
let context = getContext(this) as common.UIAbilityContext;
let helper = photoAccessHelper.getPhotoAccessHelper(context);
let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, ‘jpg’)

HarmonyOS NEXT (鸿蒙操作系统) 提供了一种模块化和可扩展的设计,使得城市选择功能可以实现灵活的定制。下面是一个简单的示例代码片段,展示了一个抽象的城市选择模块: ```java // 定义CitySelector接口 public interface CitySelector { void selectCity(String city); } // 具体实现北京和上海的城市选择类 class BeijingCity implements CitySelector { @Override public void selectCity(String city) { if (city.equals("北京")) { System.out.println("选择了北京"); } else { System.out.println("北京不支持的选择"); } } } class ShanghaiCity implements CitySelector { @Override public void selectCity(String city) { if (city.equals("上海")) { System.out.println("选择了上海"); } else { System.out.println("上海不支持的选择"); } } } // 主程序入口 public class Main { public static void main(String[] args) { // 创建城市选择实例 CitySelector selector; String chosenCity = "北京"; // 或者传入用户输入 if (chosenCity.equals("北京")) { selector = new BeijingCity(); } else if (chosenCity.equals("上海")) { selector = new ShanghaiCity(); } else { selector = null; // 非法选择,这里仅做简单处理 } // 调用城市选择 if (selector != null) { selector.selectCity(chosenCity); } } } ``` 在这个例子中,`CitySelector` 是一个抽象接口,而 `BeijingCity` 和 `ShanghaiCity` 是其具体的实现。在主程序中,根据用户的输入动态创建并调用对应的城市选择类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>