Используйте CameraRoll.saveToCameraRoll, чтобы сохранить изображение в альбом? - PullRequest
3 голосов
/ 15 мая 2019

Я использую RNCamera и он отлично работает (ниже моя функция).Я могу взять изображения и сохранить их в фотогалерею.Хотя у кого-нибудь есть понимание, как сохранить на конкретный альбом на IOS?Я видел решения для Android, вариантов для этого метода тоже нет.Не уверен, как решить это.ТИА.Я думаю, что мне может понадобиться изменить URI?Не кажется правильным, но просто ищет идеи.Возможно, мне нужно будет изменить файл библиотеки 'CameraRoll.js' в node_modules / реагировать_native / Libraries / CameraRoll?

-Читать реактивные родные документы, https://facebook.github.io/react-native/docs/cameraroll.html

-Поисковый стекопоток (найден нить с решением для Android) / google

async takePicture() {
if (this.camera) {
  const options = { quality: 0.5, based64: true }
  const data = await 
this.camera.takePictureAsync(options).then(data => 
    console.log(data.uri))
    CameraRoll.saveToCameraRoll(data.uri, 'photo'));
}

};

1 Ответ

0 голосов
/ 15 мая 2019

Вам нужно npm установить реагировать-родной-фс ... и вот ваш saveFile метод:

const saveFile = (base64) => {
  const albumPath = `${RNFS.PicturesDirectoryPath}/${APP_NAME}`;

  const fileName = `${new Date().getTime()}.png`;
  const filePathInCache = `${RNFS.CachesDirectoryPath}/${fileName}`;
  const filePathInAlbum = `${albumPath}/${fileName}`;

  return RNFS.mkdir(albumPath)
    .then(() => {
      RNFS.writeFile(filePathInCache, base64, 'base64').then(() => RNFS.copyFile(filePathInCache, filePathInAlbum)
      // Next step to show album without the need to re-boot your device:
        .then(() => RNFS.scanFile(filePathInAlbum))
        .then(() => {
          console.log('File Saved Successfully!');
        }));
    })
    .catch((error) => {
      console.log('Could not create dir', error);
    });
};
...