Android Base64图片无法长按保存 问题解决

时间:2022-10-19 02:45:29

踩了一个巨坑。

目前微信ios/android 均能长按保存src=base64的图片  (微信android x5 专门解决了这个问题);

但是android其他App没有针对解决这个系统问题(姑且认为是问题吧),所以长按base64图片 无法出现保存选项,而是出现了默认的"选择、复制、粘贴 ";

尝试使用blob也不行;

所以目前能解决的办法只有通过后台绕一圈;

base64 --> 后台 ---> url

blob 转 base64

function blobToDataURL(blob, callback)
{
var a = new FileReader();
a.onload = function (e) { callback(e.target.result); }
a.readAsDataURL(blob);
}

base64图片 转  blob

function dataURLtoBlob(dataurl)
{
var arr = dataurl.split(','), mime = arr[].match(/:(.*?);/)[],
bstr = atob(arr[]), n = bstr.length, u8arr = new Uint8Array(n);
while(n--){
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], {type:mime});
}

blob 插入html dom

$("#img").attr("src",window.URL.createObjectURL(blob));