Можно ли зашифровать образы андроид устройства с помощью реагировать родным? - PullRequest
0 голосов
/ 15 февраля 2019

Я занимаюсь разработкой приложения, в котором я делаю фотографии с использованием команды Resact-native-Image-Picker и загружаю их на сервер AWS.Однажды после загрузки я хочу зашифровать эти снятые изображения на устройстве Android, т.е. в сохраненной папке.Возможно ли это сделать?Если да, то как я могу это сделать, используя реактивный?Мой код: я могу захватывать изображения и загружать их в AWS s3.

import React, { Component } from "react";
import {
  Platform,
  StyleSheet,
  Alert,
  Text,
  TouchableOpacity,
  View,
  Picker,
  Animated,
  Easing,
  Image
} from "react-native";
import ImagePicker from "react-native-image-picker";
import { RNS3 } from "react-native-aws3";

export default class SecondScreen extends Component<Props> {
  constructor(props) {
    super(props);
    this.state = {
      file: "",
      saveImages: []
    };
  }

  takePic() {
    ImagePicker.launchCamera({}, responce => {
      const file = {
        uri: responce.uri,
        name: responce.fileName,
        method: "POST",
        path: responce.path,
        type: responce.type,
        notification: {
          enabled: true
        }
      };
      this.state.saveImages.push(file);
    });
  }
  _upload = saveImages => {
    const config = {
      keyPrefix: "uploads/",
      bucket: "s3merahkee",
      region: "us-east-2",
      accessKey: "***",
      secretKey: "***",
      successActionStatus: 201
    };

    this.state.saveImages.map(image => {
      RNS3.put(image, config).then(responce => {
        console.log(saveImages);
      });
    });
  };
  render() {
    return (
      <View style={styles.container}>
        <View style={styles.Camera}>
          <TouchableOpacity onPress={this.takePic.bind(this)}>
            <Text>Take Picture</Text>
          </TouchableOpacity>
        </View>
        <View style={styles.Send}>
          <TouchableOpacity onPress={() => this._upload()}>
            <Text>Send</Text>
          </TouchableOpacity>
        </View>
      </View>
    );
  }
}

Здесь я использую два метода: один для захвата изображений, и как только пользователь нажимает на кнопку отправить его, чтобы загрузить файлв AWS s3.

Я надеюсь, что смогу зашифровать изображение. Если возможно, скажите мне, как я могу это реализовать.Или, если это невозможно, предложите мне другой способ, которым я могу это сделать.(Пример: удаление и т. Д.)

1 Ответ

0 голосов
/ 27 марта 2019

Я сделал это с помощью преобразования изображения в base64.С помощью библиотеки response-native-fs я могу добиться этого.Здесь, как только я захватил изображения, я конвертирую их в строку base64 и удаляю реальное изображение из папки.

Мой код:

takePic = () => {

      // create a path you want to write to
      var pictureFolder = RNFetchBlob.fs.dirs.SDCardDir+'/Schoolapp';
        ImagePicker.launchCamera(options,(responce)=>{
          const file ={
            uri   : responce.uri,
            name  : responce.fileName,
            method: 'POST',
            path : responce.path,
            type :  responce.type,
            notification: {
                enabled: true
              }
          }

        //convert image into base64  
         const base64 = RNFS.writeFile(responce.uri, responce.data);
         return base64;

        //delete the original image    
         RNFS.unlink(responce.path)
          .then(() => {
            console.log('deleted');
            RNFS.scanFile(responce.path)
              .then(() => {
                console.log('scanned');
              })
              .catch(err => {
                console.log(err);
              });
          })
        .catch((err) => {
            console.log(err);
        })

        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...