从图像库获取图像

时间:2019-03-09 09:52:24

标签: angular ionic-framework ionic3 ionic-native

Ionic 3,Angular CLI 7,Angular 5。

无法从库中获取图像。

调用 getPicture 失败。我遇到错误:

  

“对象(WEBPACK_IMPORTED_MODULE_1__ionic_native_core [“ cordova”])是   不是功能。 (在   ‘对象(WEBPACK_IMPORTED_MODULE_1__ionic_native_core [“ cordova”])(此,   “ getPicture”,{“ callbackOrder”:“ reverse”},参数)’,   “ Object(WEBPACK_IMPORTED_MODULE_1__ionic_native_core [“ cordova”])”为   对象的实例)”

我已经尝试将所有本机插件都安装到5.0.0-beta.15版本,但这无济于事。

我尝试使用ImagePicker和Camera插件,但都给出相同的错误。

ImagePicker(插件为@ ionic-native / image-picker):

let options = {
  maximumImagesCount: 1
};
this.imagePicker.getPictures(options).then((results) => {
  for (var i = 0; i < results.length; i++) {
      this.imgPreview = results[i];
      this.base64.encodeFile(results[i]).then((base64File: string) => {
        this.regData.avatar = base64File;
      }, (err) => {
      });
  }
}, (err) => { console.log(err); });

相机(插件为@ ionic-native / camera):

var sourceType = this.camera.PictureSourceType.PHOTOLIBRARY;
var options = {
  quality: 100,
  sourceType: this.camera.PictureSourceType.PHOTOLIBRARY,
  saveToPhotoAlbum: false,
  correctOrientation: true
};
this.camera.getPicture(options).then((imagePath) => {
  console.log("Img path: " + imagePath);
  if (this.platform.is('android') && sourceType === this.camera.PictureSourceType.PHOTOLIBRARY) {
    this.filePath.resolveNativePath(imagePath)
      .then(filePath => {
        let correctPath = filePath.substr(0, filePath.lastIndexOf('/') + 1);
        let currentName = imagePath.substring(imagePath.lastIndexOf('/') + 1, imagePath.lastIndexOf('?'));
      });
  } else {
    var currentName = imagePath.substr(imagePath.lastIndexOf('/') + 1);
    var correctPath = imagePath.substr(0, imagePath.lastIndexOf('/') + 1);
  }
}, (err) => {
  console.log(err);
});

有人可以帮我吗?

UPD:我将ImagePicker和Base64降级为与本机核心相同的版本,并且它似乎开始起作用。但是,当我尝试从Ionic DevApp运行该应用程序时,它一直告诉我应该将telerik-imagepicker插件添加到cordova,但是它已经在列表中了! (是的,我确实尝试添加)。因此错误是“ plugin_not_installed”。

UPD 2:非常遗憾,我不得不离开这个项目,因为我没有检查Sergey提出的想法,所以我不知道解决方案

2 个答案:

答案 0 :(得分:0)

在阅读完我的答案后,似乎在构建应用程序时无法正确安装依赖项或缺少对它们的引用。乍一看,该代码似乎是正确的。您需要以任何方式将ionic升级到版本4,因为在其他一些帖子中也看到ionic v3的相机存在问题。 “ ionic 3不支持这些插件”

这个问题也有类似的问题,通过再次安装正确的依赖版本https://stackoverflow.com/a/54436891/4229159

来解决。

否则,如果仅从头开始隔离小型应用程序中的相机,它在V4中是否仍会产生相同的错误? (仅受支持的版本)

答案 1 :(得分:-1)

由于您正在使用Ionic 3,因此需要确保根据文档安装和导入插件。

请注意,这是针对Ionic 4的: https://ionicframework.com/docs/native/image-picker

安装说明:

  

ionic cordova插件添加cordova-plugin-telerik-imagepicker npm

     

安装@ ionic-native / image-picker

这是针对离子3的:

  

ionic cordova插件添加cordova-plugin-telerik-imagepicker --variable   PHOTO_LIBRARY_USAGE_DESCRIPTION =“您的使用情况消息” npm安装   -保存@ ionic-native / image-picker @ 4

请注意@ 4,它有助于npm为Ionic v3安装相关插件。

还请注意,导入语句将有所不同:

离子4具有:

import { ImagePicker } from '@ionic-native/image-picker/ngx';

离子3具有:

import { ImagePicker } from '@ionic-native/image-picker';

要删除插件:

  

cordova插件列表

然后

  

cordova插件删除PLUGIN_NAME

然后为您的框架版本安装适当的插件。