RN在android/ios手机剪切图片的操作

之前写过一个React Native调用摄像头画面及拍照和保存图片到相册全流程但是这个仅限于调用摄像头拍照并保存图片,今天再写一个版本的操作,这个博客目前实现的有三点操作:

  1. 调用摄像头拍照
  2. 对照片进行剪切
  3. 从相册选取图片

功能上面来说有两点:

  1. 点击按钮可以对摄像头进行拍照,拍完照会自动跳转到编辑页面,编辑完后图片会显示到页面上面
  2. 相册选取图片,选择完了自动跳转到图片编辑页面,编辑完了会显示到页面上

这个兼容android和ios

下面就是实现步骤

安装下面的依赖包

yarn add react-native-image-crop-picker

在RN项目下android/app/src/main/AndroidManifest.xml文件内加入以下权限申请(调用摄像头权限)

...
<uses-permission android:name="android.permission.CAMERA"/>
...

在RN项目下的ios/项目名/Info.plist文件内新增以下权限申请(调用相册和摄像头)

  ...<key>NSPhotoLibraryUsageDescription</key><string>App需要您的同意,才能访问相册</string><key>NSCameraUsageDescription</key><string>App需要您的同意,才能访问相机</string>...

由于下载了新依赖包,需要在ios文件夹打开终端执行下pod install安装ios相关依赖

在RN项目新加个页面,放入以下代码

import React, { useState } from 'react';
import { View, Button, Image } from 'react-native';
import ImagePicker from 'react-native-image-crop-picker';const MyComponent = () => {const [image, setImage] = useState(null);const handleCameraPress = async () => {try {const pickedImage = await ImagePicker.openCamera({cropping: true,cropperCircleOverlay: false,width: 300,height: 300,cropperToolbarTitle: '',cropperToolbarColor: 'black',cropperActiveWidgetColor: '#ffffff',cropperStatusBarColor: 'black',cropperToolbarWidgetColor: '#ffffff',cropperToolbarVisible: false,hideBottomControls: true,freeStyleCropEnabled: false});setImage(pickedImage.path);} catch (error) {console.log('Error:', error);}};const handleGalleryPress = async () => {try {const pickedImage = await ImagePicker.openPicker({cropping: true,cropperCircleOverlay: false,width: 300,height: 300,cropperToolbarTitle: '',cropperToolbarColor: 'black',cropperActiveWidgetColor: '#ffffff',cropperStatusBarColor: 'black',cropperToolbarWidgetColor: '#ffffff',cropperToolbarVisible: false,hideBottomControls: true,freeStyleCropEnabled: false});setImage(pickedImage.path);} catch (error) {console.log('Error:', error);}};return (<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>{image && <Image source={{ uri: image }} style={{ width: 200, height: 200 }} />}<Button title="拍照并裁剪" onPress={handleCameraPress} /><Button title="从相册选择并裁剪" onPress={handleGalleryPress} /></View>);
};export default MyComponent;

在这里插入图片描述
PS:如果这里有爆红先不用管,因为path是ImagePicker返回回来的对象里面的属性,编辑器不知道,默认就是未识别的属性,反正代码能跑通

然后直接看页面运行就好,下面贴几个效果图

页面样式
在这里插入图片描述

截图页面样式

在这里插入图片描述

选取相册图片

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/780578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++进阶,手把手带你学继承

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 主厨&#xff1a;邪王真眼 主厨的主页&#xff1a;Chef‘s blog 所属专栏&#xff1a;c大冒险 总有光环在陨落&#xff0c;总有新星在闪烁 【本节目标】 1.继…

引领2024年的人工智能前景:趋势、预测和可能性(万字长文)

欢迎来到2024年人工智能和技术的可能性之旅。在这里&#xff0c;每一个预测都是一个潜在的窗口&#xff0c;未来充满了创新、变化&#xff0c;更重要的是&#xff0c;机会类似于20世纪50年代的工业革命。50年代见证了数字计算的兴起&#xff0c;重塑了行业和社会规范。今天&…

【面经】2023年软件测试面试题大全(持续更新)附答案

前阵子一位读者告诉我&#xff0c;某位大厂HR给他发了我之前做的面试题答案合集。 这个消息让我开心了一整天&#x1f602;&#xff0c;因为这说明我之前做的面试题系列真的能帮助到部分测试同学&#xff0c;也算是侧面得到了一种认可吧。 坚持可是我们程序员家族的优良传统&a…

实时语音识别(Python+HTML实战)

项目下载地址&#xff1a;FunASR 1 安装库文件 项目提示所需要下载的库文件&#xff1a;pip install -U funasr 和 pip install modelscope 运行过程中&#xff0c;我发现还需要下载以下库文件才能正常运行&#xff1a; 下载&#xff1a;pip install websockets&#xff0c;pi…

【爬虫开发】爬虫从0到1全知识md笔记第2篇:requests模块,知识点:【附代码文档】

爬虫开发从0到1全知识教程完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;爬虫课程概要&#xff0c;爬虫基础爬虫概述,,http协议复习。requests模块&#xff0c;requests模块1. requests模块介绍,2. response响应对象,3. requests模块发送请求,4. request…

【C++的奇迹之旅】C++关键字命名空间使用的三种方式C++输入输出命名空间std的使用惯例

文章目录 &#x1f4dd;前言&#x1f320; C关键字(C98)&#x1f309; 命名空间&#x1f320;命名空间定义&#x1f309;命名空间使用 &#x1f320;命名空间的使用有三种方式&#xff1a;&#x1f309;加命名空间名称及作用域限定符&#x1f320;使用using将命名空间中某个成员…

跨境电商IP防关联是什么?有什么作用?

做跨境电商的朋友应该都知道IP防关联这个词,那么为何IP需要防关联呢&#xff1f;今天为大家来解答这个问题。 跨境电商IP防关联是指在跨境电商运营中&#xff0c;通过采取一系列技术手段&#xff0c;确保每个跨境电商账号使用独立的IP地址&#xff0c;以避免账号之间因为IP地址…

双出口nat配置示例

一、需求&#xff1a; 局域网内两个网段&#xff0c;vlan10 和 vlan 20&#xff0c;分别实现 vlan10 可访问专网&#xff0c;vlan20 可访问互联网&#xff0c;且两个网段彼此不互通。拓朴如下&#xff1a; 二、配置思路&#xff1a; 1、S1起 vlan10、20&#xff0c;做 acl 配置…

[深度学习]yolov8+streamlit搭建精美界面GUI网页设计源码实现三

【设计思路介绍】 为了使用YOLOv8和Streamlit搭建一个精美的界面GUI网页&#xff0c;你需要遵循几个关键步骤。以下是一个简化的流程&#xff0c;帮助你设计并实现这一目标&#xff1a; 1. 环境准备 安装YOLOv8 YOLOv8是一个先进的实时目标检测模型。你需要先下载并安装YOL…

Pandas操作MultiIndex合并行列的Excel,写入读取以及写入多余行及Index列处理,插入行,修改某个单元格的值,多字段排序

Pandas操作MultiIndex合并行列的excel&#xff0c;写入读取以及写入多余行及Index列处理&#xff0c;多字段排序尽量保持原来的顺序 1. 效果图及问题2. 源码参考 今天是谁写Pandas的 复合索引MultiIndex&#xff0c;写的糊糊涂涂&#xff0c;晕晕乎乎。 是我呀… 记录下&#…

JS中throw new Error(error) 和 throw error的用法与区别

抛出错误一般都是与try catch 同时出现的。 ① throw new Error(error)&#xff0c;这个是创建错误&#xff0c;创造一个错误类型&#xff08;错误实例对象&#xff09;抛出&#xff1b; ② throw error&#xff0c;这个是抛出错误。&#xff08;不建议的写法&#xff09; …

unity内存优化Texture2D优化

作为unity开发者&#xff0c;我们使用memory Profiler来查看内存&#xff0c;本期我们项目中Texture2D的内存占有比较高&#xff0c;为了对这块做优化我们先看下内存的占有情况。 step1 使用memory Profiler对手机应用程序截图 打开截取后的内存页面&#xff0c;选择顶部Unit…

【dll解密】Dll加壳保护方案分析修复

分析背景 NGame游戏海外版出现了破解版&#xff0c;该版本在dump出游戏的dll中不能直接通过反编译工具查看修改后的游戏代码&#xff0c;导致无法确定外挂修改的直接逻辑点。本文主要针对AssemblyCSharp.dll模版&#xff0c;分析其dll保护的方法。 分析过程 1、拿到Encrypt_As…

Spark-Scala语言实战(7)

在之前的文章中&#xff0c;我们学习了如何在IDEA中导入jars包&#xff0c;并做了一道例题&#xff0c;了解了RDD。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢…

04-JavaScript函数

函数&#xff08;重点&#xff09; 1.为什么使用函数? 用函数来解决代码重用的问题。 2.函数的意义 函数其实就是封装&#xff0c;把可以重复使用的代码放到函数中&#xff0c;如果需要多次使用同一段代码&#xff0c;就可以把封装成一个函数。这样的话&#xff0c;在你需…

Redis中处理处理没有ACK确认的Stream

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Stream是一个只能追加内容的数据类型。也就是说Stream这种数据类型,我们…

vue的创建、启动以及目录结构详解

vue的创建、启动以及目录结构详解目录 一. vue项目的创建 二. vue的目录结构 三. src的目录结构 四. vue项目的启动 4.1 方法1 4.2 方法2 一. vue项目的创建 创建一个工程化的Vue项目&#xff0c;执行命令&#xff1a;npm init vuelatest 注意&#xff1a;如果你在这个目…

pdf在浏览器上无法正常加载的问题

一、背景 觉得很有意思给大家分享一下。事情是这样的&#xff0c;开发给我反馈说&#xff0c;线上环境接口请求展示pdf异常&#xff0c;此时碰巧我前不久正好在ingress前加了一层nginx&#xff0c;恰逢此时内心五谷杂陈&#xff0c;思路第一时间便放在了改动项。捣鼓了好久无果…

动态链接dlopen/dlclose/..

dlopen&#xff0c;dlsym,dlclose可以在不去link shared library的前提下&#xff0c;在runtime时调用shared library里面的函数.这样可以实现shared library的覆盖或是省略编译阶段的链接检查.但dlopen/dlclose要谨慎使用,尤其是有些写的不是很好的shared library. 动态链接函…

搜索与图论——Prim算法求最小生成树

在最小生成树问题里&#xff0c;正边和负边都没问题 朴素版prim算法 时间复杂度O(n^2) 生成树&#xff1a;每一次选中的t点&#xff0c;它和集合的距离对应的那条边&#xff0c;就是生成树的一条边 算法流程和dijkstra算法非常相似 #include<iostream> #include<cs…