Выберите изображение и GIF из камеры ролл - PullRequest
0 голосов
/ 14 ноября 2018

Я создаю приложение Ionic с Angular и Firebase.

Я хочу иметь возможность загружать изображения и gif в мою базу данных Firebase, но я только смог заставить image работать.Кроме того, я не хочу видео.

Мой код выглядит следующим образом:

takePhoto(sourceType:number) {
    const options: CameraOptions = {
      quality: 40,
      destinationType: this.camera.DestinationType.DATA_URL,
      encodingType: this.camera.EncodingType.JPEG,
      mediaType: this.camera.MediaType.PICTURE,
      correctOrientation: true,
      sourceType:sourceType,
    }

    this.camera.getPicture(options).then((imageData) => {
      let base64Image = 'data:image/jpeg;base64,' + imageData;
      this.uploadToStorage(base64Image);
    }, (err) => {
      // Handle error
    });
  }

  uploadToStorage(src) {
    this.uploadProgress = true;
    let storageRef = firebase.storage().ref();
    // Create a timestamp as filename
    this.imageFileName = Math.floor(Date.now() / 1000) + "_" + this.userData.uid;
    // Create a reference to 'images/todays-date.jpg'
    const imageRef = storageRef.child('posts/'+this.imageFileName+'.jpg');
    imageRef.putString(src, firebase.storage.StringFormat.DATA_URL).then((snapshot)=> {
      snapshot.ref.getDownloadURL().then(downloadURL => {
        this.imageURL = downloadURL;
        this.uploadProgress = false;
        this.uploadSuccess = true;
        console.log(this.imageURL)
        this.logEvent("Uploaded Image");
      });
    }, (err) => {
      console.log(err)
    });
  }

Но это позволяет только неподвижные изображения.В соответствии с документами для Ионная камера вы можете изменить mediaType: this.camera.MediaType.PICTURE на mediaType: this.camera.MediaType.ALLMEDIA, но это не работает для меня.Это работает, когда я тестирую на своем компьютере, но не на iOS или Android.

Есть идеи, как разрешить выбор изображений и картинок?Спасибо!

1 Ответ

0 голосов
/ 17 ноября 2018
photos ; 
 OpenGallery(){
      console.log("taktit");
      const options: CameraOptions = {
        quality: 100,
        destinationType: this.camera.DestinationType.DATA_URL,
        sourceType: this.camera.PictureSourceType.SAVEDPHOTOALBUM 
      }

      this.camera.getPicture(options).then((imageData) => {
       // imageData is either a base64 encoded string or a file URI
       // If it's base64:
       console.log("taktit");
       let base64Image = 'data:image/jpeg;base64,' + imageData;
       this.photos.push(base64Image);
       this.photos.reverse();

      }, (err) => {
       // Handle error
      });  else {    }
    }
  • Теперь вы можете загружать фотографии ваших объектов на базу Firebase
...