JS 图片转base64编码实现及相关问题
2017-05-05 15:59
429 查看
1、JS图片转base64编码实现
function convertImgToBase64(url, callback, outputFormat){
var canvas = document.createElement('CANVAS'),
ctx = canvas.getContext('2d'),
img = new Image;
img.crossOrigin = 'Anonymous';
img.onload = function(){
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img,0,0);
var dataURL = canvas.toDataURL(outputFormat || 'image/png');
callback.call(this, dataURL);
canvas = null;
};
img.onerror = function(){
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img,0,0);
var dataURL = canvas.toDataURL(outputFormat || 'image/png');
callback.call(this, dataURL);
canvas = null;
};
img.src = url;
if (img.complete) { // 如果图片已经存在于浏览器缓存,直接调用回调函数
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img,0,0);
var dataURL = canvas.toDataURL(outputFormat || 'image/png');
callback.call(this, dataURL);
canvas = null;
return; // 直接返回,不用再处理onload事件
}
}2、代码分析
1)上述中的onload会在图片加载成功后调用
2)上述的onerror会在图片地址为无效地址的时候,即图片加载失败后调用
3)img.complete用于如果浏览器缓存了图片,则这个值true,onload、onerror都不会被调用了,此时直接进行处理即可
function convertImgToBase64(url, callback, outputFormat){
var canvas = document.createElement('CANVAS'),
ctx = canvas.getContext('2d'),
img = new Image;
img.crossOrigin = 'Anonymous';
img.onload = function(){
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img,0,0);
var dataURL = canvas.toDataURL(outputFormat || 'image/png');
callback.call(this, dataURL);
canvas = null;
};
img.onerror = function(){
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img,0,0);
var dataURL = canvas.toDataURL(outputFormat || 'image/png');
callback.call(this, dataURL);
canvas = null;
};
img.src = url;
if (img.complete) { // 如果图片已经存在于浏览器缓存,直接调用回调函数
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img,0,0);
var dataURL = canvas.toDataURL(outputFormat || 'image/png');
callback.call(this, dataURL);
canvas = null;
return; // 直接返回,不用再处理onload事件
}
}2、代码分析
1)上述中的onload会在图片加载成功后调用
2)上述的onerror会在图片地址为无效地址的时候,即图片加载失败后调用
3)img.complete用于如果浏览器缓存了图片,则这个值true,onload、onerror都不会被调用了,此时直接进行处理即可
相关文章推荐
- js实现将 图片转base64编码
- asp使用js时间控件,实现下拉日历 解决UTF-8和GB2312的编码问题
- dedecms图片相关问题―后台上传图片实现图片轮播
- Data URI scheme详解和使用实例及图片base64编码实现方法
- JS使用base64编码实现小文件上传PHP接收后转换
- 图片的base64编码实现以及网页上显示
- js实现淘宝首页图片轮播效果(修正图片滚动顺序的问题)
- js 显示 base64编码 的二进制流 图片
- js实现图片的缩放问题
- js 显示base64编码的二进制流网页图片
- JS实现base64编码与解码
- 一个JS图片放大镜,实现动态记录的图片放大,避免内存泄露,解决IE6下无法遮盖select控件问题
- 实现ipad上的内嵌webview手势缩放图片(修改版,解决在第一张图片放大的情况下翻到下一张图片无法放大的问题) 基于Quo(js库)
- js实现图片上传前的预览,实现完美兼容Firefox3,IE6,IE7,IE8和IE9的显示问题
- 用javascript实现Base64编码(解决中文问题C#里解码) 转
- 关于实现利用sharekit发送图片到twitter的相关问题
- JS base64加解密解决传输的url各种编码问题
- js对图片base64编码字符串进行解码并输出图像示例
- BASE64编码的图片在网页中的显示问题的解决
- JS实现base64编码与解码