当前位置: 首页 > news >正文

天河建网站公司html5网站源代码下载

天河建网站公司,html5网站源代码下载,濮阳招聘大濮网,wordpress首页缩略图大小【HarmonyOS】 鸿蒙保存图片或视频到相册 前言 鸿蒙中保存图片或者视频,或者其他媒体文件到设备的媒体库,可以是相册,也可以是文件管理等。共有两种方式: 需要应用申请受限权限,获取文件读写的权限(调用…

【HarmonyOS】 鸿蒙保存图片或视频到相册

前言

鸿蒙中保存图片或者视频,或者其他媒体文件到设备的媒体库,可以是相册,也可以是文件管理等。共有两种方式:

  1. 需要应用申请受限权限,获取文件读写的权限(调用需要ohos.permission.READ_IMAGEVIDEO和ohos.permission.WRITE_IMAGEVIDEO的权限),这样就可以将媒体资源(图片or视频or等等)保存到媒体库。
  2. 通过安全控件,用户触发后表示同意,可以临时授权给应用就行保存处理。

关于第二种安全控件,又分为saveButton保存按钮showAssetsCreationDialog授权弹框两种形式。前者的按钮样式不能自定义,所以后者以弹框的形式,让用户操作,触发入口的样式,应用就可以自定义了。后者算是前者的一种替代补充。

一、保存图片和视频授权示例

需要申请"ohos.permission.READ_IMAGEVIDEO"和"ohos.permission.WRITE_IMAGEVIDEO"权限。该权限是管制权限,需要你的应用去通过场景申请【申请使用受限权限】

配置权限READ_IMAGEVIDEO,WRITE_IMAGEVIDEO

"requestPermissions": [{"name": "ohos.permission.READ_IMAGEVIDEO","usedScene": {"abilities": ["EntryAbility"],"when": "inuse"},"reason": "$string:CAMERA"},{"name": "ohos.permission.WRITE_IMAGEVIDEO","usedScene": {"abilities": ["EntryAbility"],"when": "inuse"},"reason": "$string:CAMERA"}
]

向用户申请权限

//  创建申请权限明细async reqPermissionsFromUser(): Promise<number[]> {let context = getContext() as common.UIAbilityContext;let atManager = abilityAccessCtrl.createAtManager();let grantStatus = await atManager.requestPermissionsFromUser(context, ['ohos.permission.READ_IMAGEVIDEO','ohos.permission.WRITE_IMAGEVIDEO']);return grantStatus.authResults;}// 用户申请权限async requestPermission() {let grantStatus = await this.reqPermissionsFromUser();for (let i = 0; i < grantStatus.length; i++) {if (grantStatus[i] === 0) {// 用户授权,可以继续访问目标操作}}}

保存图片到媒体库

public async savePicture(buffer: ArrayBuffer): Promise<void> {let helper : photoAccessHelper.PhotoAccessHelper = photoAccessHelper.getPhotoAccessHelper(getContext(this) as common.UIAbilityContext);let options: photoAccessHelper.CreateOptions = {title: Date.now().toString()};let photoUri: string = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpg', options);console.info(photoUri)// createAsset的调用需要ohos.permission.READ_IMAGEVIDEO和ohos.permission.WRITE_IMAGEVIDEO的权限let file: fs.File = fs.openSync(photoUri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);await fs.write(file.fd, buffer);fs.closeSync(file);
}

二、saveButton示例

import { photoAccessHelper } from '@kit.MediaLibraryKit';

struct saveButtonExample {saveButtonOptions: SaveButtonOptions = {icon: SaveIconStyle.FULL_FILLED,text: SaveDescription.SAVE_IMAGE,buttonType: ButtonType.Capsule} // 设置安全控件按钮属性build() {Row() {Column() {SaveButton(this.saveButtonOptions) // 创建安全控件按钮.onClick(async (event, result: SaveButtonOnClickResult) => {if (result == SaveButtonOnClickResult.SUCCESS) {try {let context = getContext();let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);// 需要确保fileUri对应的资源存在let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg';let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createImageAssetRequest(context, fileUri);await phAccessHelper.applyChanges(assetChangeRequest);console.info('createAsset successfully, uri: ' + assetChangeRequest.getAsset().uri);} catch (err) {console.error(`create asset failed with error: ${err.code}, ${err.message}`);}} else {console.error('SaveButtonOnClickResult create asset failed');}})}.width('100%')}.height('100%')}
}

三、 showAssetsCreationDialog示例

import { photoAccessHelper } from '@kit.MediaLibraryKit';
import { fileIo } from '@kit.CoreFileKit';let context = getContext(this);
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);async function showAssetsCreationDialogExample() {try {// 指定待保存到媒体库的位于应用沙箱的图片urilet srcFileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg';let srcFileUris: Array<string> = [srcFileUri];// 指定待保存照片的创建选项,包括文件后缀和照片类型,标题和照片子类型可选let photoCreationConfigs: Array<photoAccessHelper.PhotoCreationConfig> = [{title: 'test', // 可选fileNameExtension: 'jpg',photoType: photoAccessHelper.PhotoType.IMAGE,subtype: photoAccessHelper.PhotoSubtype.DEFAULT, // 可选}];// 基于弹窗授权的方式获取媒体库的目标urilet desFileUris: Array<string> = await phAccessHelper.showAssetsCreationDialog(srcFileUris, photoCreationConfigs);// 将来源于应用沙箱的照片内容写入媒体库的目标urilet desFile: fileIo.File = await fileIo.open(desFileUris[0], fileIo.OpenMode.WRITE_ONLY);let srcFile: fileIo.File = await fileIo.open(srcFileUri, fileIo.OpenMode.READ_ONLY);await fileIo.copyFile(srcFile.fd, desFile.fd);fileIo.closeSync(srcFile);fileIo.closeSync(desFile);console.info('create asset by dialog successfully');} catch (err) {console.error(`failed to create asset by dialog successfully errCode is: ${err.code}, ${err.message}`);}
}

注意:
1. 使用createAsset需要指定是视频还是图片, fileio.open并不校验文件内容
2. 使用createImageAssetRequest接口,如果要保存视频需要用createVideoeAssetRequest
或者还可以直接使用createAssetRequest和addResource的方式

http://www.yayakq.cn/news/955132/

相关文章:

  • 外贸国际网站推广服装店营销策划方案
  • 营销网站的特征WordPress302被篡改
  • 一加手机官网网站竞价软件哪个好
  • 网站剪辑培训机构排名网站备案号有效期
  • 馆陶企业做网站推广给女友做的网站 源码
  • vs2017 做网站网页设计教程谁的好
  • 网站模板一般用什么软件做汽车建设网站
  • 做短裙的视频网站wordpress目录和页面
  • 营销型网站怎么收费标准简阳建设网站公司
  • 如何建设自己网站淘客网站建设收费吗
  • 泉州建站平台北京画册设计公司
  • 免费咨询男科网站关键词优化难不难
  • WordPress如何发布内容到页面上郑州seo公司
  • 上海市住房城乡建设部网站广州设计事务所
  • 旅游景点介绍网页设计模板徐州seo外包公司
  • 如何介绍自己做的网站产品推广语
  • 坪地网站建设哪家好在线制作图片海腾娱乐
  • 网站开发需要会啥如何实现网站的快速排名
  • 企业微信网站开发文档紧急通知网页升级记住我们
  • 从色彩度讨论如何建设一个网站.wordpress 绑定多个ip地址
  • 全站仪快速建站h5动态页面
  • 地产网站建设方案百度小说风云榜首页
  • 手机做网站需要多少天阿里巴巴网页版登录入口
  • HTML5怎么做自适应网站wordpress上一页下一页
  • soho个人可以建网站吗沈阳做网站找思路
  • 实业 东莞网站建设温州做网站费用
  • 行政单位单位网站建设建材商城网站建设
  • 垂直电商网站有哪些行者seo无敌
  • 怎么样做兼职网站梦幻西游网页版最新版本
  • 做今网站淘宝客怎么建设自己网站