如何在 IONIC 3 中从图库中获取或选择图像

Posted

技术标签:

【中文标题】如何在 IONIC 3 中从图库中获取或选择图像【英文标题】:How to take or choose image from gallery in IONIC 3 【发布时间】:2018-04-17 13:01:24 【问题描述】:

如何在 IONIC 3 中从图库中获取图像?

我无法使用

从图库中获取图像

https://ionicframework.com/docs/native/camera/

https://ionicframework.com/docs/native/camera-preview/

【问题讨论】:

【参考方案1】:

您可以使用Native camera plugin 来完成。

.ts

 //take Photo
  takePhoto(sourceType:number) 
    const options: CameraOptions = 
      quality: 50,
      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;
    , (err) => 
      // Handle error
    );
  

注意:你只需要像这样调用上述方法:

this.takePhoto(0);//photo library

this.takePhoto(1);//camera

0photo library 1Camera

用户界面

【讨论】:

值得注意的是,那些sourceType 值可以作为常量使用,这可以使您的代码更具描述性:this.camera.PictureSourceType.CAMERAthis.camera.PictureSourceType.PHOTOLIBRARY 如何选择多张图片?? 如何选择多张图片?? 你可以使用这个:ionicframework.com/docs/native/image-picker@AnkitMaheshwari @Sampath - 不打开图片库(用于选择图片的文件夹),而是一起打开所有图片,这使得滚动和查找所需图片变得非常困难。【参考方案2】:

试试这个:

TakeCamera() 
    const options: CameraOptions = 
      quality: 100,
      destinationType: this.camera.DestinationType.DATA_URL,
      encodingType: this.camera.EncodingType.JPEG,
      mediaType: this.camera.MediaType.PICTURE
    
    this.camera.getPicture(options).then((imageData) => 
      this.base64Image = 'data:image/jpeg;base64,' + imageData;
      this.photos.push(this.base64Image);
      this.photos.reverse();
    , (err) => 
      console.log(err);
    );
  

【讨论】:

请使用 Markdown 格式。另外,请用英语解释为什么/如何解决问题。【参考方案3】:

使用图片选择器插件:

getImage()
let options = 
maximumImagesCount:1//select number of image default is 15

this.imagePicker.getPictures(options).then((results) => 
  for (var i = 0; i < results.length; i++) 
      console.log('Image URI: ' + results[i]);
  
, (err) => 
console.log("error: "+err); 
);

参考image picker

【讨论】:

【参考方案4】:

根据投票最多的答案,快速 sn-ps。

定义2个选项类型:

  private optionsCamera: CameraOptions = 
    quality: 100,
    targetWidth: 600,
    sourceType: this.camera.PictureSourceType.CAMERA,
    destinationType: this.camera.DestinationType.DATA_URL,
    encodingType: this.camera.EncodingType.JPEG,
    mediaType: this.camera.MediaType.PICTURE
  

  private optionsGallery: CameraOptions = 
    quality: 100,
    sourceType: this.camera.PictureSourceType.PHOTOLIBRARY,
    destinationType: this.camera.DestinationType.DATA_URL,
    encodingType: this.camera.EncodingType.JPEG,
    mediaType: this.camera.MediaType.PICTURE
  

当你从相机中调用方法 getPicture

将选项对象替换为适当的情况。

这是相机用的

this.camera.getPicture(this.optionsCamera).then((imageData) => 
  let base64Image = 'data:image/jpeg;base64,' + imageData;
 , (err) => 
  // Handle error
  console.log(err)
 )

这是给画廊的

this.camera.getPicture(this.optionsGallery).then((imageData) => 
  let base64Image = 'data:image/jpeg;base64,' + imageData;
 , (err) => 
  // Handle error
  console.log(err)
 )

【讨论】:

以上是关于如何在 IONIC 3 中从图库中获取或选择图像的主要内容,如果未能解决你的问题,请参考以下文章

在 WebView 中从相机或图库上传图像

如何在swift中从UIImage获取图像扩展/格式

在颤振插件 image_picker 示例中从图库中选择图像时内存增加

从图库或相机中选择图像的对话框

当我在 swift 3 中从图库中获取照片时,为啥收藏视图为空?

在 Android 4.4 中从图库中选择时裁剪