在 Ionic 3 中显示由 Native Camera 拍摄的 FILE_URI 图像

cai*_*lin 5 ionic-framework ionic-native ionic3

你如何显示用户@ionic-native/camera在 Ionic 3 中使用的 FILE_URI 图像?

我可以使用 Ionic Native 的 Camera 获取 FILE_URI 图像 URL,结果如下:

file:///var/mobile/Containers/Data/Application/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX/tmp/cdv_photo_005.jpg
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试通过引用视图模板中的 URI 将此图像显示回用户时,该图像永远不会加载。

我尝试过的事情:

- 直接在视图中使用图像 URI

<img src="{{profile.image}}">    // Never loads
Run Code Online (Sandbox Code Playgroud)

- 通过包含DomSanitizer在页面组件中来清理 URI :

<img [src]="domSanitizer.bypassSecurityTrustUrl(profile.image)">    // Never loads
Run Code Online (Sandbox Code Playgroud)

由于性能拖累,我宁愿不使用 base64 图像。我在这里做错了什么?

Man*_*waj 3

从“离子角度”导入{normalizeURL};ionic3 <img> 标签 src

<img *ngIf="base64Image" src="{{base64Image}}"/> 

 openCamera(pictureSourceType: any) {
  let options: CameraOptions = {
   quality: 95,
   destinationType: this.camera.DestinationType.FILE_URI,
   sourceType: pictureSourceType,
   encodingType: this.camera.EncodingType.PNG,
   targetWidth: 400,
   targetHeight: 400,
   saveToPhotoAlbum: true,
   correctOrientation: true
 };
 this.camera.getPicture(options).then(imageData => {
  if (this.platform.is('ios')) {
      this.base64Image = normalizeURL(imageData);
      // Alternatively if the problem only occurs in ios and normalizeURL 
      // doesn't work for you then you can also use:
      // this.base64Image= imageData.replace(/^file:\/\//, '');
  }
  else {
      this.base64Image= "data:image/jpeg;base64," + imageData;
  }
 }, error => {
     console.log('ERROR -> ' + JSON.stringify(error));
   });
 }
Run Code Online (Sandbox Code Playgroud)