我正在使用本机脚本,无法在本机脚本中将本地图像路径转换为base 64。
private startSelection(context) {
let that = this;
context
.authorize()
.then(() => {
that.imageAssets = [];
that.imageSrc = null;
return context.present();
})
.then((selection) => {
//console.log("Selection done: " + JSON.stringify(selection));
that.imageSrc = that.isSingleMode && selection.length > 0 ? selection[0] : null;
//console.log( "Hello skdafyvsoa ydfs98a698d8s9" + JSON.stringify(that.imageSrc));
// var base64 = that.imageSrc._android.toBase64String();
// var base64 = that.imageSrc._android;
const image = that.imageSrc._android;
//const imageAsBase64 = image.toBase64String(enums.ImageFormat.png);
//var data = base64Img.base64Sync(image);
// console.log(data);
// set the images to be loaded from the assets with optimal sizes (optimize memory usage)
selection.forEach(function (element) {
element.options.width = that.isSingleMode ? that.previewSize : that.thumbSize;
element.options.height = that.isSingleMode ? that.previewSize : that.thumbSize;
});
that.imageAssets = selection;
this.checkFileupload = true;
}).catch(function (e) {
console.log(e);
});
}
请帮助提供此代码
_handleReaderLoaded(readerEvt) {
var binaryString = readerEvt.target.result;
console.log(binaryString);
this.base64textString= btoa(binaryString);
console.log(btoa(binaryString));
}
我正在使用带有本机脚本的angular 6,并且想要将图像转换为base64并从后端保存到数据库中,而我正在使用sql server。
答案 0 :(得分:-1)
您正在使用nativescript-imagepicker插件,该插件返回ImageAsset
。如注释中所述,您接收的路径不是对图像的直接引用。因此,要发送实际图像的base64表示形式,您需要先创建它,然后对其进行解码。这是在Android上的操作方法。
selection.forEach(element => {
let asset: ImageAsset = element;
// if Android
asset.getImageAsync((bitmap) => {
console.log(`android.graphics.Bitmap: ${bitmap}`);
let byteArrayOutputStream = new java.io.ByteArrayOutputStream();
bitmap.compress(android.graphics.Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
let byteArray = byteArrayOutputStream.toByteArray();
console.log(`byteArray: ${byteArray}`); // BASE64
});
});
请注意,我正在访问本机Android API和Java名称空间。在TypeScript中,将需要为所有声明的变量进行显式键入,因此需要显式声明需要声明java
和android
变量。
// somewhere at the beginning of the file
declare let android: any; // or use tns-platform-declarations
declare let java: any;
对于Android和iOS API,您还可以使用t ns-platform-declarations(这是更好的建议方法),但是您仍然需要声明java
变量,如上所示