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报错 Object doesn't support this property or method的原因分析
Mar 31 Javascript
JavaScript XML和string相互转化实现代码
Jul 04 Javascript
JQuery获取浏览器窗口内容部分高度的代码
Feb 24 Javascript
jquery中animate的stop()方法作用实例分析
Jan 30 Javascript
从零学习node.js之简易的网络爬虫(四)
Feb 22 Javascript
JavaScrpt的面向对象全面解析
May 09 Javascript
Webpack执行命令参数详解
Jun 17 Javascript
JS实现table表格内针对某列内容进行即时搜索筛选功能
May 11 Javascript
vue+web端仿微信网页版聊天室功能
Apr 30 Javascript
原生JS运动实现轮播图
Jan 02 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
Jan 26 Javascript
vue 根据选择的月份动态展示日期对应的星期几
Feb 06 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
PHP详解ASCII码对照表与字符转换
2011/12/05 PHP
简单谈谈PHP vs Node.js
2015/07/17 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
thinkPHP5框架接口写法简单示例
2019/08/05 PHP
Jquery选择子控件&quot;大于号&quot;和&quot; &quot;区别介绍及使用示例
2013/06/25 Javascript
node.js中的fs.lstatSync方法使用说明
2014/12/16 Javascript
JavaScript计时器示例分析
2015/02/05 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
使用JavaScript和CSS实现文本隔行换色的方法
2015/11/04 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
javascript函数的四种调用模式
2017/01/08 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
2018/02/08 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
VUE+node(express)实现前后端分离
2019/10/13 Javascript
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
用Python的urllib库提交WEB表单
2009/02/24 Python
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
python常见数制转换实例分析
2015/05/09 Python
AUC计算方法与Python实现代码
2020/02/28 Python
Python利用myqr库创建自己的二维码
2020/11/24 Python
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
MYSQL支持事务吗
2013/08/09 面试题
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
全国道德模范事迹
2014/02/01 职场文书
粗加工管理制度
2014/02/04 职场文书
就业协议书怎么填
2014/04/11 职场文书
说明书怎么写
2014/05/06 职场文书
会计专业毕业生自荐书
2014/06/25 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
公司考勤管理制度
2015/08/04 职场文书
学校就业保障协议书
2019/06/24 职场文书
Python selenium的这三种等待方式一定要会!
2021/06/10 Python
总结python多进程multiprocessing的相关知识
2021/06/29 Python