从图像库中获取图像

问题描述 投票:0回答:2

Ionic 3,Angular CLI 7,Angular 5。

无法从库中获取图像。

它在调用getPicture时失败。我收到一个错误:

“对象(WEBPACK_IMPORTED_MODULE_1__ ion_native_core [”cordova“])不是函数。 (在'对象(WEBPACK_IMPORTED_MODULE_1__ ion_native_core [“cordova”])(这,“getPicture”,{“callbackOrder”:“reverse”},arguments)','Object(WEBPACK_IMPORTED_MODULE_1__ionic_native_core [“cordova”])'是Object的一个实例) ”

我已经尝试将所有本机插件放到版本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降级为与native-core相同的版本,它似乎开始工作了。但是当我试图从Ionic DevApp运行应用程序时,它一直告诉我应该将cordrik-imagepicker插件添加到cordova,但它已经在其列表中了! (是的,我确实尝试添加)。所以错误是“plugin_not_installed”。

UPD 2:我不得不离开这个项目,不幸的是我不知道解决方案是什么,因为我没有检查谢尔盖提出的想法

angular ionic-framework ionic3 ionic-native
2个回答
-1
投票

由于您使用的是Ionic 3.您需要确保根据文档安装和导入插件:

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

安装说明:

离子cordova插件添加cordova-plugin-telerik-imagepicker npm

安装@ ionic-native / image-picker

这是为了Ionic 3:

离子cordova插件添加cordova-plugin-telerik-imagepicker - 变量PHOTO_LIBRARY_USAGE_DESCRIPTION =“你的使用信息”npm install --save @ ionic-native / image-picker @ 4

请注意@ 4帮助npm为Ionic v3安装相关插件。

另请注意,import语句会有所不同:

Ionic 4有:

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

Ionic 3有:

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

要删除插件:

cordova插件列表

然后

cordova插件删除了PLUGIN_NAME

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


0
投票

在阅读完答案后,似乎无法正确安装依赖项或在构建应用程序时缺少对它们的引用。乍一看,代码似乎是正确的。无论如何你需要将离子升级到版本4,因为它还看到离子v3在其他一些帖子中与相机有问题。 “离子3不支持那些插件”

这个问题有一个类似的问题,它通过再次安装适当的依赖版本https://stackoverflow.com/a/54436891/4229159得到修复

否则,如果你只是在一个由刮痕制作的小应用程序中隔离相机,它在V4中是否仍会产生相同的错误? (仅支持的版本)

© www.soinside.com 2019 - 2024. All rights reserved.