【发布时间】:2019-06-24 12:12:55
【问题描述】:
我有一个应用程序,允许用户从图库中选择照片或通过相机拍照。我正在尝试显示通过相机拍摄的图像,它工作正常,它返回一个文件路径,如
file:///Users/ray/Library/Developer/CoreSimulator/Devices/C8202B3B-300B-4819-8CD3-4C4AA690CE7C/ data/Applications/D82BF64E-6DD1-4645-B637-BCF65001FD29/tmp/cdv_photo_003.jpg
但是当我尝试从画廊中选择一张照片时,它会显示一个损坏的图像缩略图,并且它会变成一个文件路径。
content://com.android.providers.media.documents/document/image%3A21
Ionic CLI 版本: PRO 4.2.1
科尔多瓦版本: 8.0.0
NPM 版本: 6.4.1
Node.js 版本: 8.11.3
平台:安卓
我也尝试过寻找解决方案,但没有奏效,或者我仍然做错了什么
Unable to load image when selected from the gallery on Android in phonegap
https://www.raymondcamden.com/2014/10/10/Cordova-the-Camera-plugin-AngularJS-and-Ninja-Cats
其中一些建议使用此代码
if (imageURI.substring(0,21)=="content://com.android") {
photo_split=imageURI.split("%3A");
imageURI="content://media/external/images/media/"+photo_split[1];
}
但这个解决方案并不是那么可靠,因为并非所有图像源都返回包含“content://com.android”的相同文件路径,就像来自 Google 相册的照片一样> 返回 'content://com.google.android'
_其中一些还建议在目标类型上使用DATA_URL,但这会占用大量内存并可能导致应用崩溃_
这是我的代码:
TS 文件
selectImage(sourceType) {
const options: CameraOptions = {
quality: 100,
destinationType: this.camera.DestinationType.FILE_URI,
encodingType: this.camera.EncodingType.JPEG,
mediaType: this.camera.MediaType.PICTURE,
saveToPhotoAlbum: true,
sourceType: sourceType
}
this.camera.getPicture(options).then((imageData) => {
let base64Image = 'data:image/jpeg;base64,' + imageData;
this.imagePreview = imageData;
}, (err) => {
this.toastCtrl.presentToast(err);
});
}
HTML 文件
<img src="{{imagePreview}}" />;
我希望有人可以帮助我解决这个问题。提前谢谢你????。
【问题讨论】:
-
使用 ionic 的 PhotoLibrary 从图库中获取图片
-
你好@KajolChaudhary。我会试一试,然后让你知道结果。谢谢你的建议????
-
你知道base64吗?
-
@KhurshidAnsari,您是否与 ionic 的 base64 本机插件有关?
标签: ionic-framework ionic3 cordova-plugins hybrid-mobile-app ionic-native