javascript从image转换为base64位编码的String


Posted in Javascript onJuly 29, 2014

最近需要把app的微信分享方法开放给webview,涉及到分享的图片,如果通过传送图片连接,那将要在后台再取一次图片文件,会影响速度,我选择webview把image以base64位编码的方式传给本地应用。 下面是实现的参考代码:

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
<title>Image to Base64 - jsFiddle demo by handtrix</title> 

<script type='text/javascript' src='//code.jquery.com/jquery-2.0.2.js'></script> 

<link rel="stylesheet" type="text/css" href="/css/result-light.css" rel="external nofollow" > 

<style type='text/css'> 
@import url('//netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css'); 

body{ 
padding: 20px; 
} 
</style> 

<script type='text/javascript'>//<![CDATA[ 
$(window).load(function(){ 
/** 
* convertImgToBase64 
* @param {String} url 
* @param {Function} callback 
* @param {String} [outputFormat='image/png'] 
* @author HaNdTriX 
* @example 
convertImgToBase64('http://goo.gl/AOxHAL', function(base64Img){ 
console.log('IMAGE:',base64Img); 
}) 
*/ 
function convertImgToBase64(url, callback, outputFormat){ 
var canvas = document.createElement('CANVAS'); 
var ctx = canvas.getContext('2d'); 
var 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); 
// Clean up 
canvas = null; 
}; 
img.src = url; 
} 

$('#img2b64').submit(function(event){ 
var imageUrl = $(this).find('input[name=url]').val(); 
console.log('imageUrl', imageUrl); 
convertImgToBase64(imageUrl, function(base64Img){ 
$('.output') 
.find('textarea') 
.val(base64Img) 
.end() 
.find('a') 
.attr('href', base64Img) 
.text(base64Img) 
.end() 
.find('img') 
.attr('src', base64Img); 
}); 

event.preventDefault(); 
}); 

});//]]> 

</script> 
</head> 
<body> 
<h2>Input</h2> 
<form class="input-group" id="img2b64"> 
<input 
type="url" 
name="url" 
class="form-control" 
placeholder="Insert an IMAGE-URL" 
value="http://upload.wikimedia.org/wikipedia/commons/4/4a/Logo_2013_Google.png" 
required> 
<span class="input-group-btn"> 
<input 
type="submit" 
class="btn btn-default"> 
</span> 
</form> 
<hr> 
<h2>Output</h2> 
<div class="output"> 
<textarea class="form-control"></textarea><br> 
<a></a><br><br> 
<img><br> 
</div> 
</body> 
</html>
Javascript 相关文章推荐
Extjs Ajax 乱码问题解决方案
Apr 15 Javascript
jQuery 属性选择器element[herf*='value']使用示例
Oct 20 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
Dec 19 Javascript
纯javascript实现四方向文本无缝滚动效果
Jun 16 Javascript
jQuery往textarea中光标所在位置插入文本的方法
Jun 26 Javascript
js实现分割上传大文件
Mar 09 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
Jun 28 Javascript
图解prototype、proto和constructor的三角关系
Jul 31 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
Jun 07 Javascript
vue里的data要用return返回的原因浅析
May 28 Javascript
Vuex实现数据共享的方法
Dec 20 Javascript
Vue组件生命周期运行原理解析
Nov 25 Vue.js
javascript自定义函数参数传递为字符串格式
Jul 29 #Javascript
处理文本部分内容的TextRange对象应用实例
Jul 29 #Javascript
js键盘事件的keyCode
Jul 29 #Javascript
js识别不同浏览器基于userAgent做判断
Jul 29 #Javascript
让浏览器DOM元素最后加载的js方法
Jul 29 #Javascript
js实现遮罩层划出效果是生成div而不是显示
Jul 29 #Javascript
解释&amp;&amp;和||在javascript中的另类用法
Jul 28 #Javascript
You might like
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
2007/03/15 PHP
php截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
arguments对象
2006/11/20 Javascript
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
说明你的Javascript技术很烂的五个原因
2011/04/26 Javascript
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
js计算精度问题小结
2013/04/22 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
2016/06/12 Javascript
Jquery组件easyUi实现表单验证示例
2016/08/23 Javascript
JavaScript实现格式化字符串函数String.format
2016/12/16 Javascript
原生js实现焦点轮播图效果
2017/01/12 Javascript
基于vue2的table分页组件实现方法
2017/03/20 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
Angular2使用vscode断点调试ts文件的方法
2017/12/13 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
[42:50]NB vs VP 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python函数学习笔记
2008/10/07 Python
Python实现比较两个列表(list)范围
2015/06/12 Python
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
老生常谈Python序列化和反序列化
2017/06/28 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
通信工程毕业生求职信
2013/11/16 职场文书
财产公证书样本
2014/04/04 职场文书
银行进社区活动总结
2014/07/07 职场文书
飞机制造技术专业求职信
2014/07/27 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
篮球拉拉队口号
2015/12/25 职场文书
《最终幻想14》6.01版本4月5日推出 追加新任务新道具
2022/04/03 其他游戏
大脑的记忆过程在做数据压缩,不同图形也有共同的记忆格式
2022/04/29 数码科技