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

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.lryc.cn/news/331007.html

相关文章:

  • C语言 | Leetcode C语言题解之第6题Z字形变换
  • C 回调函数的两种使用方法
  • 医院云HIS系统源码,二级医院、专科医院his系统源码,经扩展后能够应用于医联体/医共体
  • NineData云原生智能数据管理平台新功能发布|2024年3月版
  • java Web 疫苗预约管理系统用eclipse定制开发mysql数据库BS模式java编程jdbc
  • Qt5.14.2 揭秘Qt日志神器高效诊断程序潜在隐疾
  • Mac上设置环境变量PATH
  • Redis 全景图(1)--- 关于 Redis 的6大模块
  • Lambda表达式,Stream流
  • Apache Hive的基本使用语法(一)
  • Python爬虫详解:原理、常用库与实战案例
  • 搭建跨境电商电商独立站如何接入1688平台API接口|通过1688API接口采集商品通过链接搜索商品下单
  • 【GlobalMapper精品教程】073:像素到点(Pixels-to-Points)从无人机图像轻松生成点云
  • 论文复现1:Mobilealoha
  • pycharm复习
  • 【SQLSERVER】批量导出所有作业或链接脚本
  • 函数参数缺省和内联函数【C++】
  • javaWeb城市公交查询系统的设计与实现
  • 企业案例:金蝶云星空对接旺店通·企业版
  • wpsword求和操作教程
  • Android 手机部署whisper 模型
  • 通信术语:初学者入门指南(二)
  • Java中使用MQTT客户端库实现TLS/SSL加密通信的示例
  • 【m122】webrtc的比较
  • axios发送get请求但参数中有数组导致请求路径多出了“[]“的处理办法
  • vue3的mars3d点击右键出现置顶、向下、向上等选项
  • MySQL进阶-----SQL提示与覆盖索引
  • 机器学习模型之K近邻
  • 强化基础-Java-泛型基础
  • c++20协程详解(一)