html image blob to base64
html image blob to base64
我在fileinputjs方面遇到了一些问题。图像的src是blob。但我想用images的src做点什么。所以我使用readAsDataURL来获取base64。但它有任何问题
<script type="text/javascript">
$("#last").click(function(){
var blob=document.querySelector(".file-preview-image").src;
var reader = new FileReader(); //通过 FileReader 读取blob类型
reader.onload = function(){
this.result === dataURI; //base64编码
}
console.log(reader.readAsDataURL(blob));
})
</script>
然后是CCD_ 1。
这里有很多误解。
- 您的变量
blob
不是Blob,而是一个字符串,即.file-preview-image
的url
FileReader无法从此字符串执行任何操作。(或者至少不是你想要的) - 在FileReader的
onload
回调中,您只是检查结果是否等于未定义的变量dataURI
。那不会有任何作用 - 您正在尝试
console.log
对readAsDataURL
的调用,该调用将是undefined
,因为此方法是异步的(您必须在回调中调用console.log
)
但是,由于我猜测您拥有的是一个对象url(Uncaught TypeError: Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'
0),那么您的解决方案要么是获得真正的Blob对象并将其传递给FileReader
,要么是在画布上绘制此图像,然后调用其toDataURL
方法来获得base64编码的版本。
如果你能得到斑点:
var dataURI;
var reader = new FileReader();
reader.onload = function(){
// here you'll call what to do with the base64 string result
dataURI = this.result;
console.log(dataURI);
};
reader.readAsDataURL(blob);
否则:
var dataURI;
var img = document.querySelector(".file-preview-image");
var canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
canvas.getContext('2d').drawImage(img, 0,0);
dataURI = canvas.toDataURL();
但请注意,对于稍后的操作,您必须等待图像实际加载后才能在画布上绘制
此外,默认情况下,它会将您的图像转换为png版本。如果原始图像是JPEG格式,也可以传递image/jpeg
作为toDataURL('image/jpeg')
的第一个参数
如果图像是svg,那么会有其他使用<object>
元素的解决方案,但除非您真的需要它,否则我将把它留给其他答案。
相关文章:
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- Html页面上的多个Base64图像和平滑加载
- 正在将base64 jpeg从input-type=file上传到服务器
- 正则表达式在字符串中找到base64
- 如何使用jquery将base64图像路径转换为真实路径
- jQuery AJAX write to XML
- grep in JQuery to C#
- how to convert html <div> to pdf
- Node.js - POST to iFrame?
- SVG xml to image
- Advantages to DOMParser vs template & innerHTML
- how to split a string with ','
- How to declare a Map containing certain properties with flow
- 无法在Cordova 4.0 ios中将jpg/jpeg图像转换为Base64
- 如何在不在本地下载的情况下将url中提供的文件(pdf/doc)转换为json/string/base64格式
- Php variable obj to js
- html image blob to base64
- Highcharts - export to base64
- Change node.js Buffer(BASE64) to jQuery
- CryptoKey ArrayBuffer to base64 and Back