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

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

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

功能上面来说有两点:

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

下面就是实现步骤

安装下面的依赖包

js 复制代码
yarn add react-native-image-crop-picker

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

js 复制代码
...
<uses-permission android:name="android.permission.CAMERA"/>
...

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

js 复制代码
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返回回来的对象里面的属性,编辑器不知道,默认就是未识别的属性,反正代码能跑通

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

页面样式

截图页面样式

选取相册图片

相关推荐
heroboyluck6 分钟前
Svelte 核心语法详解:Vue/React 开发者如何快速上手?
前端·svelte
海的诗篇_8 分钟前
前端开发面试题总结-JavaScript篇(二)
开发语言·前端·javascript·typescript
琹箐18 分钟前
ant-design4.xx实现数字输入框; 某些输入法数字需要连续输入两次才显示
前端·javascript·anti-design-vue
程序员-小李19 分钟前
VuePress完美整合Toast消息提示
前端·javascript·vue.js
Uyker1 小时前
从零开始制作小程序简单概述
前端·微信小程序·小程序
EndingCoder5 小时前
React从基础入门到高级实战:React 实战项目 - 项目三:实时聊天应用
前端·react.js·架构·前端框架
阿阳微客6 小时前
Steam 搬砖项目深度拆解:从抵触到真香的转型之路
前端·笔记·学习·游戏
德育处主任Pro7 小时前
『React』Fragment的用法及简写形式
前端·javascript·react.js
CodeBlossom7 小时前
javaweb -html -CSS
前端·javascript·html
打小就很皮...8 小时前
HBuilder 发行Android(apk包)全流程指南
前端·javascript·微信小程序