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 相关文章推荐
javascript应用:Iframe自适应其加载的内容高度
Apr 10 Javascript
Prototype String对象 学习
Jul 19 Javascript
使用apply方法实现javascript中的对象继承
Dec 16 Javascript
JavaScript的原型继承详解
Feb 15 Javascript
Angularjs的ng-repeat中去除重复数据的方法
Aug 05 Javascript
详解Vue爬坑之vuex初识
Jun 14 Javascript
AngularJS实现tab选项卡的方法详解
Jul 05 Javascript
js图片放大镜实例讲解(必看篇)
Jul 17 Javascript
Js面试算法详解
Apr 08 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
Apr 26 jQuery
从0到1构建vueSSR项目之node以及vue-cli3的配置
Mar 07 Javascript
Vue3.0的优化总结
Oct 16 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
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
2013/06/03 PHP
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
php正则提取html图片(img)src地址与任意属性的方法
2017/02/08 PHP
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
jquery each()源代码
2011/02/14 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
JS提交form表单实例分析
2015/12/10 Javascript
jQuery Html控件基本操作(日常收集整理)
2016/03/11 Javascript
谈一谈JS消息机制和事件机制的理解
2016/04/14 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
2016/04/23 Javascript
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
详解vue移动端项目代码拆分记录
2019/03/15 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
单线程JavaScript实现异步过程详解
2020/05/19 Javascript
python编写微信远程控制电脑的程序
2018/01/05 Python
使用Selenium破解新浪微博的四宫格验证码
2018/10/19 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
解决Keras 自定义层时遇到版本的问题
2020/06/16 Python
Python实现自动签到脚本的示例代码
2020/08/19 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
Python jieba库分词模式实例用法
2021/01/13 Python
一些Solaris面试题
2015/12/22 面试题
linux比较文件内容的命令是什么
2013/03/04 面试题
领导班子在批评与自我批评座谈会上的发言
2014/09/28 职场文书
财务工作犯错检讨书
2014/10/07 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
2015大学生求职信范文
2015/03/20 职场文书
员工保密协议范本,您一定得收藏!很有用!
2019/08/08 职场文书
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis