您的位置:首页 > 财经 > 产业 > 软件项目实施流程_凡科模板_东莞专业网站推广工具_海阳seo排名

软件项目实施流程_凡科模板_东莞专业网站推广工具_海阳seo排名

2025/9/16 22:44:26 来源:https://blog.csdn.net/weixin_50513060/article/details/146540819  浏览:    关键词:软件项目实施流程_凡科模板_东莞专业网站推广工具_海阳seo排名
软件项目实施流程_凡科模板_东莞专业网站推广工具_海阳seo排名

核心API    HarmonyOS NEXT

photoAccessHelper.PhotoViewPicker()

应用场景

在很多时候,我们都会在应用中用到系统相册选择功能,可能选择一张或多张图片,用于不同的业务功能。那么我们怎么唤起图片选择界面呢?这里就要用到photoAccessHelper。

打开相册

我们使用photoAccessHelper中的PhotoSelectOptions先创建一个图片参数类型,给图片选择制定规则,然后创建图片选择器,传入选择图片的规则,会返回一个图片的路径数组。我们先打印出来。

Button('选则一张图片').onClick(async () => {// 1. 打开相册选一张图// 选择图片的参数const options = new photoAccessHelper.PhotoSelectOptions()// 指定文件类型是图片options.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE// 选择一张图options.maxSelectNumber = 1// 创建相册选择器const picker = new photoAccessHelper.PhotoViewPicker()// 去选图片const selectResult = await picker.select(options)// 得到选择图片的 uri 完整路径const uri = selectResult.photoUris[0]promptAction.showToast({ message: uri })
})

 点击打开图片选择,选择完成后就会打印出图片的uri路径

 

将图片转换为buffer数据流

当我们得到图片的具体uri路径的时候,我们需要先把图片转为buffer数据流

// 2. 图片转换为 buffer// 以只读的方式根据路径打开文件const file = fileIo.openSync(uri, fileIo.OpenMode.READ_ONLY)// 获取 文件大小const photoSize = fileIo.statSync(file.fd).size// 创建一个 bufferconst buffer = new ArrayBuffer(photoSize)// 读取文件fileIo.readSync(file.fd, buffer)// 关闭文件fileIo.closeSync(file)

将buffer数据流转化为图像数据PixelMap

接收一个buffer调用createPixelMap生成图片数据

 // 将 buffer 转换为 PixelMapconst imageSource = image.createImageSource(buffer);// 创建 PixelMapconst pixel = await imageSource.createPixelMap({});

完整写法

直接复制到页面可用,无需权限配置

import { photoAccessHelper } from '@kit.MediaLibraryKit'
import { promptAction } from '@kit.ArkUI'
import { fileIo } from '@kit.CoreFileKit'
import { image } from '@kit.ImageKit'@Entry
@Component
struct Test {@State pixel: image.PixelMap | undefined = undefined;build() {Column() {Image(this.pixel).width(200).height(200).margin({ bottom: 20 })Button('选则一张图片').onClick(async () => {// 1. 打开相册选一张图// 选择图片的参数const options = new photoAccessHelper.PhotoSelectOptions()// 指定文件类型是图片options.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE// 选择一张图options.maxSelectNumber = 1// 创建相册选择器const picker = new photoAccessHelper.PhotoViewPicker()// 去选图片const selectResult = await picker.select(options)// 得到选择图片的 uri 完整路径const uri = selectResult.photoUris[0]promptAction.showToast({ message: uri })// 2. 图片转换为 buffer// 以只读的方式根据路径打开文件const file = fileIo.openSync(uri, fileIo.OpenMode.READ_ONLY)// 获取 文件大小const photoSize = fileIo.statSync(file.fd).size// 创建一个 bufferconst buffer = new ArrayBuffer(photoSize)// 读取文件fileIo.readSync(file.fd, buffer)// 关闭文件fileIo.closeSync(file)// 将 buffer 转换为 PixelMapconst imageSource = image.createImageSource(buffer);// 创建 PixelMapthis.pixel = await imageSource.createPixelMap({});})}.width('100%').height('100%').justifyContent(FlexAlign.Center)}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com