Nativescript 从原生图像中获取 base64 数据
Nativescript get base64 data from native image
我尝试使用 https://github.com/bradmartin/nativescript-drawingpad 将签名保存到我的后端。但是我根本无法找到从 getDrawing() 获取一些 "useful" 数据的解决方案,其中 returns 一个原生图像对象,例如 iOS 上的 UIImage
。
我很想 "convert" 将图像数据转换为一些 base64(png 或其他)字符串并将其发送到我的服务器。
我试过类似的东西:
var ImageModule = require("ui/image");
var ImageSourceModule = require("image-source");
elements.drawingpad.getDrawing().then(function(a){
var image = ImageSourceModule.fromNativeSource( a );
api.post("sign", image.toBase64String());
});
我也试过 post 就像在演示中看到的那样。
我真的很想看到有关如何使用 "image data" 本身的演示。
谢谢!
感谢@bradmartin 我找到了解决方案:
var image = ImageSourceModule.fromNativeSource(a);
var base64 = image.toBase64String('png');
实际上,经过大量的挖掘和大量的错误,我终于弄明白了。
首先,您必须需要 nativescript-imagepicker 源模块以及 nativescript 图像源。
var imagepicker = require("nativescript-imagepicker");
var ImageSourceModule = require("tns-core-modules/image-source");
您想要更新用户个人资料并将 base64 字符串发送到后端进行处理的情况
function changeProfileImage(args) {
var page = args.object;
var profile = page.getViewById("profile-avatar");
var context = imagepicker.create({ mode: "single" });
context.authorize().then(function() {
return context.present();
}).then(function(selection) {
profile.background = `url(${selection[0]._android})`;
profile.backgroundRepeat = `no-repeat`;
profile.backgroundSize = `cover`;
ImageSourceModule.fromAsset(selection[0]).then(image => {
var base64 = image.toBase64String('png');
// console.log(base64);
uploadMediaFile(base64);
});
}).catch(function (e) {
// process error
console.log(e);
});
}
我尝试使用 https://github.com/bradmartin/nativescript-drawingpad 将签名保存到我的后端。但是我根本无法找到从 getDrawing() 获取一些 "useful" 数据的解决方案,其中 returns 一个原生图像对象,例如 iOS 上的 UIImage
。
我很想 "convert" 将图像数据转换为一些 base64(png 或其他)字符串并将其发送到我的服务器。
我试过类似的东西:
var ImageModule = require("ui/image");
var ImageSourceModule = require("image-source");
elements.drawingpad.getDrawing().then(function(a){
var image = ImageSourceModule.fromNativeSource( a );
api.post("sign", image.toBase64String());
});
我也试过 post 就像在演示中看到的那样。
我真的很想看到有关如何使用 "image data" 本身的演示。
谢谢!
感谢@bradmartin 我找到了解决方案:
var image = ImageSourceModule.fromNativeSource(a);
var base64 = image.toBase64String('png');
实际上,经过大量的挖掘和大量的错误,我终于弄明白了。
首先,您必须需要 nativescript-imagepicker 源模块以及 nativescript 图像源。
var imagepicker = require("nativescript-imagepicker");
var ImageSourceModule = require("tns-core-modules/image-source");
您想要更新用户个人资料并将 base64 字符串发送到后端进行处理的情况
function changeProfileImage(args) {
var page = args.object;
var profile = page.getViewById("profile-avatar");
var context = imagepicker.create({ mode: "single" });
context.authorize().then(function() {
return context.present();
}).then(function(selection) {
profile.background = `url(${selection[0]._android})`;
profile.backgroundRepeat = `no-repeat`;
profile.backgroundSize = `cover`;
ImageSourceModule.fromAsset(selection[0]).then(image => {
var base64 = image.toBase64String('png');
// console.log(base64);
uploadMediaFile(base64);
});
}).catch(function (e) {
// process error
console.log(e);
});
}