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四则运算函数代码
Jul 21 Javascript
10个基于浏览器的JavaScript调试工具分享
Feb 07 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
Jan 15 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
May 25 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
Sep 13 Javascript
JS实现重新加载当前页面或者父页面的几种方法
Nov 30 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
Jan 24 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
Mar 03 Javascript
AngularJS实现的base64编码与解码功能示例
May 17 Javascript
深入理解JavaScript的async/await
Aug 05 Javascript
vue中keep-alive,include的缓存问题
Nov 26 Javascript
JavaScript动画实例之粒子文本的实现方法详解
Jul 28 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
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
php内嵌函数用法实例
2015/03/20 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
2020/05/27 PHP
Dom 是什么的详细说明
2010/10/25 Javascript
js编写trim()函数及正则表达式的运用
2013/10/24 Javascript
jQuery添加删除DOM元素方法详解
2016/01/18 Javascript
利用js定义一个导航条菜单
2017/03/14 Javascript
jqueryUI tab标签页代码分享
2017/10/09 jQuery
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
微信小程序http连接访问解决方案的示例
2018/11/05 Javascript
jQuery控制input只能输入数字和两位小数的方法
2019/05/16 jQuery
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
在weex中愉快的使用scss的方法步骤
2020/01/02 Javascript
vue实现tab栏点击高亮效果
2020/08/19 Javascript
[01:36:17]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第一场 1月31日
2021/03/11 DOTA
在Python中使用next()方法操作文件的教程
2015/05/24 Python
使用django的ORM框架按月统计近一年内的数据方法
2019/07/18 Python
python函数的万能参数传参详解
2019/07/26 Python
python误差棒图errorbar()函数实例解析
2020/02/11 Python
python suds访问webservice服务实现
2020/06/26 Python
canvas实现圆绘制的示例代码
2019/09/11 HTML / CSS
关于iframe跨域使用postMessage的实现
2019/10/29 HTML / CSS
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
消防安全责任书范本
2014/04/15 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
开展读书活动总结
2014/06/30 职场文书
英语课外活动总结
2014/08/27 职场文书
财务务虚会发言材料
2014/10/20 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
经典导游欢迎词
2015/01/26 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
浅谈redis的过期时间设置和过期删除机制
2022/03/18 MySQL
DQL数据查询语句使用示例
2022/12/24 MySQL