鸿蒙实现相机拍照及相册选择照片
前言:
1.如果你的应用不是存储类型或者相机拍照类型,你就需要用 @kit.CameraKit Api 实现相机拍照和相册选择照片功能,如果你不用这个的话,你使用 picker.PhotoViewPicker ,你就需要申请权限,那你提交应用审核的时候就会被拒,说你使用了敏感权限。
2.以下是自己封装的一个工具类,可直接导入使用
import { camera, cameraPicker } from '@kit.CameraKit';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
import fs from '@ohos.file.fs';
import { BusinessError } from '@kit.BasicServicesKit';
class PhotoPicker {
private imgSrc:string = ''
//拍照
async takePhoto():Promise<string> {
const pickerResult = await cameraPicker.pick(getContext(),
[cameraPicker.PickerMediaType.PHOTO], {
cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK
});
this.saveImage(pickerResult.resultUri);
return this.imgSrc;
}
//从相册中选 photoAccessHelper版
async pickPhoto():Promise<string | void> {
const PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;
//选择图片数量
PhotoSelectOptions.maxSelectNumber = 1;
let photoPicker = new photoAccessHelper.PhotoViewPicker();
try {
const res = await photoPicker.select(PhotoSelectOptions)
if (res.photoUris.length <= 0) {
return
}
this.saveImage(res.photoUris[0])
return this.imgSrc;
} catch (e) {
console.log('img----err--',JSON.stringify(e))
}
}
//存到应用缓存
private saveImage(src:string){
try {
const destPath = getContext(this).cacheDir
const fileType = src.split('.')[1]
const fileName = Date.now()
const path = `${destPath}/${fileName}.${fileType}`
const imgFile = fs.openSync(src,fs.OpenMode.READ_ONLY)
const tempFile = fs.openSync(path,fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
// 拷贝
fs.copyFileSync(imgFile.fd,tempFile.fd)
fs.close(imgFile)
fs.close(tempFile)
// 从沙箱中获取图片路径
// this.imgSrc = fileUri.getUriFromPath(path)
this.imgSrc = path
} catch (e) {
let err: BusinessError = e as BusinessError;
console.info("img--[picker] Photo Save error = " + JSON.stringify(err));
}
}
}
export const photoPicker = new PhotoPicker()
相关文章:
鸿蒙实现相机拍照及相册选择照片
前言: 1.如果你的应用不是存储类型或者相机拍照类型,你就需要用 kit.CameraKit Api 实现相机拍照和相册选择照片功能,如果你不用这个的话,你使用 picker.PhotoViewPicker ,你就需要申请权限,那你提交应用审…...
「C/C++」C++17 之 std::filesystem::recursive_directory_iterator 目录及子目录迭代器
✨博客主页何曾参静谧的博客📌文章专栏「C/C」C/C程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…...
智能EDA小白从0开始 —— DAY30 冉谱微RFIC-GPT
在科技日新月异的今天,电子设计自动化(EDA)行业正以前所未有的速度推动着半导体产业的革新与发展,引领着全球电子产业迈向更加智能化、高效化的未来。作为EDA领域的佼佼者,冉谱公司始终站在技术创新的前沿,…...
Android -- 调用系统相册之图片裁剪保存
前言 最近线上反馈,部分vivo手机更换头像时调用系统相册保存图片失败,经本人测试,确实有问题。 经修复后,贴出这块的代码供小伙伴们参考使用。 功能 更换头像选择图片: 调用系统相机拍照,调用系统图片…...
读《道德经》让人感到心胸气闷?董仲舒篡改
为什么读《道德经》会让人感到心胸气闷?难道是董仲舒篡改所致? 作为世界智慧源头的《老子》,享誉古今中外,是世界历史上最伟大的著作之一。 然而,很多人读《道德经》时会感到心胸气闷,这究竟是为什么呢&am…...
D52【python 接口自动化学习】- python基础之模块与标准库
day52 标准库 学习日期:20241029 学习目标:模块与标准库 -- 67 标准库:Python默认提供的便携功能有哪些? 学习笔记 标准库中的常见组件 如何通过官方文档学习标准 from urllib.request import urlopen with urlopen(http://ww…...
基于yolov8的布匹缺陷检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】
更多目标检测和图像分类识别项目可看我主页其他文章 功能演示: 基于yolov8的布匹缺陷检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】_哔哩哔哩_bilibili (一)简介 基于yolov8的布匹缺陷检测系统是在 PyTo…...
SQL Server 中,将单行数据转换为多行数据
在 SQL Server 中,将单行数据转换为多行数据通常涉及到将某个字段中的逗号分隔的值拆分成多行。这种操作通常称为“拆分”或“展开”(Explode)。以下是一些常用的方法来实现这一目标: 1. 使用内置函数 STRING_SPLIT 从 SQL Serv…...
解决数组两数之和问题与逻辑推理找出谋杀案凶手
给定一个整数数组nums和一个整数目标值target(2<nums.length<10^4),请你在该数组中找出和为目标值target 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返…...
uniapp的IOS证书申请(测试和正式环境)及UDID配置流程
1.说明 本教程只提供uniapp在ios端的证书文件申请(包含正式环境和开发环境)、UDID配置说明,请勿用文档中的账号和其他隐私数据进行测试,请勿侵权! 2.申请前准备 证书生成网站:苹果应用上传、解析&#x…...
windows 安装apex_Nvidia Apex安装
参见windows 安装apex_Nvidia Apex安装 重点: 1、在安装前先检查一下,电脑的cuda版本和pytorch内的cuda版本是否一样,不一样的话就把低版本的进行升级; $ git clone https://github.com/NVIDIA/apex$ cd apex2、在保证cuda版本一…...
Laravel5 抓取第三方网站图片,存储到本地
背景 近期发现,网站上的部分图片无法显示, 分析发现,是因为引用的第三方网站图片(第三方服务器证书已过期) 想着以后显示的方便 直接抓取第三方服务器图片,转存到本地服务器 思路 1. 查询数据表࿰…...
DevOps和CI/CD以及在微服务架构中的作用
DevOps 和 CI/CD 是现代软件开发和运维中两个重要的概念,它们之间有紧密的联系,但也有不同的侧重点。以下是对这两个概念的详细介绍和比较。 1. DevOps 定义: DevOps 是一种文化、运动和实践,旨在通过促进开发(Development)和运维(Operations)团队之间的协作,提升软…...
Rust 力扣 - 5. 最长回文子串
文章目录 题目描述题解思路题解代码题解链接 题目描述 题解思路 从中心点先寻找和中心点相等的左右端点,在基于左右端点进行往外扩散,直至左右端点不相等或者越界,然后左右端点这个范围内就是我们找寻的回文串,我们遍历中心点&am…...
DDOS防护介绍
DDoS攻击的基本概念 分布式拒绝服务攻击(DDoS)是一种网络攻击方式,攻击者通过控制多个被感染的计算机(僵尸网络)同时向目标服务器发送大量的网络请求,导致目标服务器资源耗尽,无法正常提供服务…...
深入了解 kotlinx-datetime:配置与使用指南
深入了解 kotlinx-datetime:配置与使用指南 在Kotlin多平台开发中,处理日期和时间是常见的需求。kotlinx-datetime库提供了强大且简洁的API来帮助开发者应对这一挑战。本文将详细介绍如何配置kotlinx-datetime库,并通过生动的示例演示其核心…...
Qt编程技巧小知识点(6)根据 *IDN? 对程控仪器连接状态进行确认
文章目录 Qt编程技巧小知识点(6)根据 *IDN? 对程控仪器连接状态进行确认小结 Qt编程技巧小知识点(6)根据 *IDN? 对程控仪器连接状态进行确认 确定仪器连接问题,常用的是监测仪器的连接状态,如下代码所示&…...
【Android】Kotlin教程(4)
文章目录 1.field2.计算属性3.主构造函数4.次构造函数5.默认参数6.初始化块7.初始化顺序7.延迟初始化lateinit8.惰性初始化 1.field field 关键字通常与属性的自定义 getter 和 setter 一起使用。当你需要为一个属性提供自定义的行为时,可以使用 field 来访问或设置…...
机票电子行程单如何批量查验?Java机票电子行程单查验接口示例-发票查验接口
机票电子行程单来了,它方便了人们的出行。现如今,随着旅游、差旅市场的回暖与线上业务的蓬勃发展,机票电子行程单的需求量急剧攀升,如何高效且准确地查验这些电子行程单成为许多企业和财务部门关注的焦点。传统的人工查验流程耗时…...
记录element-ui改造select显示为table,并支持多查询条件
最近遇到的一个需求 , 很有趣,是需要一个select组件,要求显示工号,员工姓名,以及区域 三个字段,并且要支持三个字段的查询。显然element原生的组件不适用,这时候我们需要改造一下,把…...
NeuroSynth脑成像元分析:Python神经影像数据处理终极指南
NeuroSynth脑成像元分析:Python神经影像数据处理终极指南 【免费下载链接】neurosynth Neurosynth core tools 项目地址: https://gitcode.com/gh_mirrors/ne/neurosynth NeuroSynth是一个功能强大的Python包,专门用于大规模功能性神经影像数据的…...
2026年最新英语单词AI辅助工具 帮英语学习者轻松提升背词效率
英语单词学习的核心痛点拆解我们团队做英语学习工具测评快5年了,后台收到最多的提问就是「有没有能真的提升背词效率的工具」,拆解下来行业的共性痛点其实很明确:第一是资源错配,80%的背词时间都花在已经掌握的词汇上,…...
数说故事解读AI品牌心智:让品牌被AI看见、推荐与信任
当AI全面进入商业决策、智能体成为企业标配,品牌增长逻辑正在发生底层重构:品牌不再只是面对消费者,更需要被AI识别、理解、推荐与信任。数说故事在2026 D3智慧增长大会上提出全新观点——AI品牌心智,将成为AI共生时代品牌最重要的…...
解决Claude Code频繁封号与Token不足的替代接入方案
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 解决Claude Code频繁封号与Token不足的替代接入方案 1. 场景与核心思路 对于依赖Claude Code进行编程辅助的开发者而言࿰…...
MicroClaw:跨平台智能体运行时,统一AI助手部署与管理
1. 项目概述:一个跨平台的智能体运行时如果你曾经尝试过在不同的聊天平台上部署AI助手,比如在Telegram上搞一个,又在Discord上搞一个,你大概率会感到头疼。每个平台都有自己的一套API、认证方式和消息格式,这意味着你几…...
跨境直播里,为什么很多团队设备很强,画面却依旧不稳定?
做跨境直播的人,基本都会经历一个阶段:疯狂升级设备。更贵的相机更强的显卡更高规格的采集卡更多灯光但实际开播后:直播依旧掉帧OBS 占用异常推流延迟增加画面偶发模糊音视频不同步很多时候,问题并不是设备性能不够。而是…...
模型视图(13):【实战】QColumnView构建级联文件浏览器[官翻]
1. QColumnView实战:打造级联文件浏览器 第一次看到QColumnView这个控件时,我正需要开发一个类似macOS Finder的文件管理器。当时尝试了各种方案都不够理想,直到发现Qt这个隐藏的宝藏控件。它用多列联动的形式展示层级数据,特别适…...
基于语义的代码搜索工具Hypergrep:从AST解析到智能调用链分析
1. 项目概述:为什么我们需要一个“更聪明”的代码搜索工具? 如果你和我一样,每天都要在动辄几十万行、横跨多个模块和语言的代码仓库里“大海捞针”,那你肯定对传统的 grep 或 IDE 的全局搜索又爱又恨。爱的是它们简单直接&…...
别再只会用IP核了!手把手教你用Verilog从零实现一个16阶FIR滤波器(附完整代码)
从零构建16阶FIR滤波器:Verilog实战指南与工程思维解析 在FPGA开发领域,FIR(有限脉冲响应)滤波器是数字信号处理的基础模块,但大多数工程师习惯直接调用厂商提供的IP核,这就像只会开自动挡汽车的司机——虽…...
Codex:不只是程序员的代码助手,更是办公人士的高效伙伴
Codex:不只是程序员的代码助手,更是办公人士的高效伙伴 面向团队协作、文档处理、数据分析和日常执行的智能工作台 当人们谈到 Codex,第一反应往往是“写代码”。这当然是它的强项,但如果只把 Codex 看成程序员的专属工具&#…...
