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

news2024/12/1 0:23:26

之前写过一个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.coloradmin.cn/o/1555679.html

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

相关文章

什么样的人适合学习网络安全?怎么学?_

有很多想要转行网络安全或者选择网络安全专业的人在进行决定之前一定会有的问题&#xff1a;什么样的人适合学习网络安全&#xff1f;我适不适合学习网络安全&#xff1f; 会产生这样的疑惑并不奇怪&#xff0c;毕竟网络安全这个专业在2017年才调整为国家一级学科&#xff0c;…

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

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

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

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

2024年春季思维100线上比赛怎么考?来看几道官方样题(附答案)

根据思维100活动的官方通告&#xff0c;2024年春季的思维100活动从前天&#xff08;2024年3月28日&#xff09;就正式启动了&#xff0c;整个活动从3月底启动&#xff0c;5月底结束。整个过程共有三场比赛&#xff1a; 第一轮4月20日线上比赛&#xff1a;在家里或自己选择地方…

多模态大模型:解析未来智能汽车的新引擎

多模态大模型&#xff1a;解析未来智能汽车的新引擎 1. 多模态大模型简介2. 多模态大模型在智能汽车中的应用2.1 感知与认知2.2 智能驾驶辅助2.3 智能交互 随着人工智能技术的不断进步&#xff0c;智能汽车已经从概念变成了现实&#xff0c;成为了当今科技领域的焦点之一。而在…

通俗易懂Redis缓存穿透,缓存击穿,缓存雪崩

1.1 缓存穿透 原因&#xff1a;当我们查询一个数据的时候&#xff0c;缓存中没有&#xff0c;就会去查询我们的关系型数据库&#xff0c;而且查询不到的数据是不会放到我们的缓存中&#xff0c;就会导致我们每次的请求都会来到我们的关系型数据库中&#xff0c;从而导致关系型…

Windows安装tomcat,以服务的方式管理,如何设置虚拟内存

之前工作中&#xff0c;部署tomcat都是使用Linux服务器&#xff0c;最近遇到个客户&#xff0c;提供的服务器是Windows server&#xff0c;并且需要通过服务的方式管理tomcat&#xff1b;以自己多年的码农经验&#xff0c;感觉应该没有问题&#xff0c;结果啪啪打脸了&#xf…

RWKV_Pytorch:支持多硬件适配的开源大语言模型推理框架

亲爱的技术探索者们&#xff0c;今天我要向大家隆重推荐一个在开源社区中崭露头角的项目——RWKV_Pytorch。这是一个基于Pytorch的RWKV大语言模型推理框架&#xff0c;它不仅具备高效的原生Pytorch实现&#xff0c;而且还扩展了对多种硬件的适配支持&#xff0c;让模型的部署和…

新数字时代的启示:揭开Web3的秘密之路

在当今数字时代&#xff0c;随着区块链技术的不断发展&#xff0c;Web3作为下一代互联网的概念正逐渐引起人们的关注和探索。本文将深入探讨新数字时代的启示&#xff0c;揭开Web3的神秘之路&#xff0c;并探讨其在未来的发展前景。 1. Web3的定义与特点 Web3是对互联网未来发…

卷积神经网络(CNN)——基础知识整理

文章目录 1、卷积神经网络 2、图片格式 3、图片卷积运算 4、Kernel 与 Feature Map 5、padding/边缘填充 6、Stride/步长 7、pooling/池化 8、shape 9、epoch、batch、Batch Size、step 10、神经网络 11、激活函数 1、卷积神经网络 既然叫卷积神经网络&#xff0c;这里面首先是…

【数据结构】树tree

树的遍历 广度遍历Breadth-first traversal Breadth-first traversal is the traversal strategy used in the binary tree.Breadth first traversal, also known as level order traversal is the traversal strategy used in a binary tree. It involves visiting all the …

JUC:park/unpark的用法与原理

park / unpark 用法 // 暂停当前线程 LockSupport.park(); // 恢复某个线程的运行 LockSupport.unpark(暂停线程对象)**先说结论&#xff1a;**无论unpark在park前还是后&#xff0c;都可以解除暂停状态。 先park在unpark可以成功运行&#xff1a; Thread t1 new Thread((…

郭林保大夫——帕金森病明明很早就诊疗了,还是见不到好效果?

郭林保大夫&#xff1a;帕金森是一种常见的神经系统退行性疾病&#xff0c;如果不及时治疗&#xff0c;病情会逐渐加重&#xff0c;导致患者的生活质量严重下降。可能会出现肌肉僵硬、震颤、运动障碍等症状&#xff0c;使患者行动不便&#xff0c;甚至丧失自理能力。此外&#…

羊大师羊奶:每一滴都是自然与健康的馈赠

在忙碌的都市生活中&#xff0c;保持健康和活力显得尤为重要。对于追求品质生活的您&#xff0c;羊大师羊奶不仅是一款饮品&#xff0c;更是一种健康的生活态度。源自深山中的纯净环境&#xff0c;每一头羊都接受了精心的饲养与呵护&#xff0c;确保了羊奶的天然纯粹和营养价值…

农村集中式生活污水分质处理及循环利用技术指南

立项单位&#xff1a;生态环境部土壤与农业农村生态环境监管技术中心、山东文远环保科技股份有限公司、北京易境创联环保有限公司、中国环境科学研究院、广东省环境科学研究院、中铁第五勘察设计院集团有限公司、中华环保联合会水环境治理专业委员会 本文件规定了集中式村镇生活…

GT收发器第四篇_QPLL和CPLL工作原理

文章目录 前言一、CPLL工作原理二、QPLL工作原理 前言 每个channel的时钟结构如图&#xff1a; Transceiver内部时钟来源可以是QPLL也可以是自己的CPLL。其内部TX 和 RX 时钟分频器可以单独从 QPLL 或 CPLL 中选择时钟&#xff0c;允许 TX和 RX 数据通道使用不同的参考时钟输入…

python-判断列表字典循环

比较运算符 不等于 &#xff01; if 布尔值&#xff1a; [执行语句-真实执行] else: [执行语句] mood_index int(input("对象今天的心情指数的是&#xff1a;")) if mood_index > 60:print("恭喜&#xff0c;今晚应该可以带游戏&#xff0c;去吧")…

第十五届蓝桥杯第三期模拟赛第十题 ← 上楼梯

【问题描述】 小蓝要上一个楼梯&#xff0c;楼梯共有 n 级台阶&#xff08;即小蓝总共要走 n 级&#xff09;。小蓝每一步可以走 a 级、b 级或 c 级台阶。 请问小蓝总共有多少种方案能正好走到楼梯顶端&#xff1f;【输入格式】 输入的第一行包含一个整数 n 。 第二行包含三个整…

MySQL开窗函数

测试环境&#xff1a;mysql8.0.18 官方文档&#xff1a;https://dev.mysql.com/doc/refman/8.0/en/window-functions.html 一、窗口函数介绍二、语法结构三、自定义窗口1.rows&#xff08;重点&#xff09;2.range3.默认窗口 四、常用窗口函数示例1.row_number & rank &…

北京小蓝蜂科技有限公司 基本情况

北京小蓝蜂科技有限公司 基本情况 公司概述 北京小蓝蜂科技有限公司(简称“小蓝蜂”)是一家专注于互联网行业的公司,成立于4年前,位于北京市海淀区成府路45号中关村智造大街G座一层J030。小蓝蜂主要业务包括技术开发、技术咨询、技术转让、技术推广等,同时也涉及销售自行…