我想使用AngularJS将我的Base64图像转换为我的cordova应用程序项目中的blob,但我一直收到Illegal构造函数错误。我尝试了很多在线提供的解决方案,但似乎都没有。任何帮助表示赞赏。
var imageElement = angular.element(document.querySelector('#profileImg'));
var imageURI = dataURIToBlobURI(imageElement.attr('src'));
function dataURIToBlobURI(dataURI) {
// convert base64 to raw binary data held in a string
// doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this
var byteString = atob(dataURI.split(',')[1]);
// separate out the mime component
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]
// write the bytes of the string to an ArrayBuffer
var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
var bb = new Blob([ab], {type: 'image/png'});
return bb;
}
我一直在这里遇到错误new Blob([ab], {type: 'image/png'})
,似乎并不知道如何让它发挥作用。只有当应用在Android或iOS中时才会在Chrome中查看。
我尝试过以下但是都无济于事。
var bb = new Blob(ab);
var bb = new Blob([ab]);
var bb = new Blob(dataURI);
谢谢
答案 0 :(得分:1)
金斯利!可能的,您可以重现错误的设备实际上不支持Blob。实际上你可以用两种方式:
首先,检查一下 polyfill或smth类似于解决您的问题。它允许您使用Blob作为构造函数。
其次,您可以使用除Blob之外的BlobBuilder。下面的小例子,
var bb = new BlobBuilder();
bb.append('blob content');
var blob = bb.getBlob('text/plain');
答案 1 :(得分:0)
我用它来解决我的问题。只是因为任何人遇到这个问题。所有解决方案在我的设备上都不起作用。只需按照说明添加javascript文件即可。 https://github.com/blueimp/JavaScript-Canvas-to-Blob
var b64Data = 'R0lGODdhUAA8AIABAAAAAP///ywAAAAAUAA8AAACS4SPqcvtD6' +
'OctNqLs968+w+G4kiW5omm6sq27gvH8kzX9o3n+s73/g8MCofE' +
'ovGITCqXzKbzCY1Kp9Sq9YrNarfcrvcLDovH5PKsAAA7',
imageUrl = 'data:image/gif;base64,' + b64Data,
blob = window.dataURLtoBlob && window.dataURLtoBlob(imageUrl);