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 相关文章推荐
动态添加js事件实现代码
Mar 12 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
Jun 18 Javascript
利用jQuery实现可输入搜索文字的下拉框
Oct 23 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
Dec 24 Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
Mar 03 Javascript
微信小程序 slider的简单实例
Apr 19 Javascript
基于js中的原型(全面讲解)
Sep 19 Javascript
详解http访问解析流程原理
Oct 18 Javascript
JS实现的JSON数组去重算法示例
Apr 11 Javascript
浅谈React 服务器端渲染的使用
May 08 Javascript
JavaScript对象原型链原理解析
Jan 22 Javascript
vue实现下拉菜单树
Oct 22 Javascript
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
ThinkPHP与PHPExcel冲突解决方法
2011/08/08 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
Eclipse的PHP插件PHPEclipse安装和使用
2014/07/20 PHP
php图片添加文字水印实现代码
2016/03/15 PHP
使用PHPMailer发送邮件实例
2017/02/15 PHP
PHP多维数组排序array详解
2017/11/21 PHP
IE中createElement需要注意的一个问题
2010/07/13 Javascript
actionscript与javascript的区别
2011/05/25 Javascript
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
AngularJs基于角色的前端访问控制的实现
2016/11/07 Javascript
javascript中关于类型判断的一些疑惑小结
2018/10/14 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
vue路由中前进后退的一些事儿
2019/05/18 Javascript
详解Python中的Descriptor描述符类
2016/06/14 Python
解决Python安装后pip不能用的问题
2018/06/12 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
2019/07/09 Python
在django项目中导出数据到excel文件并实现下载的功能
2020/03/13 Python
python Gabor滤波器讲解
2020/10/26 Python
经典c++面试题二
2015/08/14 面试题
一些Solaris面试题
2013/03/22 面试题
留学自荐信
2013/10/10 职场文书
企划主管岗位职责
2013/12/12 职场文书
怎么写好自荐书
2014/03/02 职场文书
医学院毕业生自荐信范文
2014/03/06 职场文书
公司联欢晚会主持词
2014/03/22 职场文书
优秀教师演讲稿
2014/05/06 职场文书
云南省召开党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
《火烧云》教学反思
2016/02/23 职场文书
2022漫威和DC电影上映作品
2022/04/05 欧美动漫