SER*_*PRO 4 base64 android blackberry ios cordova
我正试图从我手机上的相册中选取的图像中获取base64,但我无法使其工作:
我试过这个:
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
console.log("0");
fileSystem.root.getFile(imageURI, null, function(fileEntry) {
console.log("1");
fileEntry.file(function(file) {
console.log("2");
var reader = new FileReader();
reader.onloadend = function(evt) {
console.log("Read complete!");
image64.value = Base64.encode(evt.target.result);
};
reader.readAsText(file);
}, failFile);
}, failFile);
}, failSystem);
Run Code Online (Sandbox Code Playgroud)
虽然图像显示正确..我从此函数收到错误:
fileSystem.root.getFile(imageURI, null, function(fileEntry)
Run Code Online (Sandbox Code Playgroud)
错误是:FileError.ENCODING_ERR
我知道代码看起来不漂亮.但我不知道如何从imageURI获取Base64编码.
我在Google网上找到了解决方案.我修改了一下这就是结果:
var gotFileEntry = function(fileEntry) {
console.log("got image file entry: " + fileEntry.fullPath);
fileEntry.file( function(file) {
var reader = new FileReader();
reader.onloadend = function(evt) {
console.log("Read complete!");
image64.value = Base64.encode(evt.target.result);
};
reader.readAsText(file);
}, failFile);
};
window.resolveLocalFileSystemURI(imageURI, gotFileEntry, failSystem);
Run Code Online (Sandbox Code Playgroud)
注意:读取正常的500万像素图像需要大约20秒,而对其进行编码则需要10-15到Base64.
小智 7
SERPRO的上述方法有效......但我必须改变
reader.readAsText(file);
to
reader.readAsDataURL(file);
Run Code Online (Sandbox Code Playgroud)
因此,行
image64.value = Base64.encode(evt.target.result);
Run Code Online (Sandbox Code Playgroud)
可以删除,base64结果可以直接提取为
image64.value = evt.target.result;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10272 次 |
| 最近记录: |