【问题标题】:Getting image from image library从图像库中获取图像
【发布时间】:2019-03-13 01:17:55
【问题描述】:

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

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

【问题讨论】:

  • 请在问题中添加代码作为实际代码sn-p,不要放包含代码的图片,这样可以更好地索引该问题。另外,您能否向我们提供有关您使用的库的更多信息? (我假设它是你加载的一些插件吗?)
  • 您提到了 5.0.0 版本 - ionic 3 不支持这些。安装插件时必须在插件名称后添加@4 以获得最新的 v3 稳定版
  • 你好@SergeyRudenko!您可以在主线程中添加评论吗?在我看来这是解决方案

标签: angular ionic-framework ionic3 ionic-native


【解决方案1】:

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

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

否则,如果您只将相机隔离在一个从头开始制作的小应用程序中,它是否仍然会在 V4 中产生相同的错误? (仅支持的版本)

【讨论】:

  • 很遗憾,我不得不继续看第 3 版
  • 谢谢!请检查 UPD 部分
【解决方案2】:

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

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

安装说明:

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

安装@ionic-native/image-picker

这适用于 Ionic 3:

ionic cordova 插件添加 cordova-plugin-telerik-imagepicker --variable PHOTO_LIBRARY_USAGE_DESCRIPTION="你的使用信息" npm install --save @ionic-native/image-picker@4

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

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

Ionic 4 有:

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

Ionic 3 有:

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

要删除插件:

cordova 插件列表

然后

cordova 插件删除 PLUGIN_NAME

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

【讨论】:

    猜你喜欢
    • 2021-03-29
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多