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 相关文章推荐
Jquery 弹出层插件实现代码
Oct 24 Javascript
jQuery maxlength文本字数限制插件
Apr 16 Javascript
jquery动态改变form属性提交表单
Jun 03 Javascript
JavaScript编程中容易出BUG的几点小知识
Jan 31 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
Aug 28 Javascript
Jquery和JS获取ul中li标签的实现方法
Jun 02 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
Oct 08 Javascript
不得不知的ES6小技巧
Jul 28 Javascript
原生javascript实现连连看游戏
Jan 03 Javascript
Node.js Event Loop各阶段讲解
Mar 08 Javascript
angular组件间传值测试的方法详解
May 07 Javascript
JS ES6异步解决方案
Apr 29 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 截取字符串并以零补齐str_pad() 函数
2011/05/07 PHP
php版微信小店API二次开发及使用示例
2016/11/12 PHP
js传值 判断
2006/10/26 Javascript
JavaScript 继承的实现
2009/07/09 Javascript
JQuery自定义事件的应用 JQuery最佳实践
2010/08/01 Javascript
jquery中子元素和后代元素的区别示例介绍
2014/04/02 Javascript
Javascript中的getUTCDay()方法使用详解
2015/06/10 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
2015/10/16 Javascript
js实现图片轮播效果
2015/12/19 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
2016/06/08 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
AngularJS实现DOM元素的显示与隐藏功能
2016/11/22 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
2017/07/20 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
countUp.js实现数字动态变化效果
2019/10/17 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
Python实现配置文件备份的方法
2015/07/30 Python
itchat接口使用示例
2017/10/23 Python
如何用Python合并lmdb文件
2018/07/02 Python
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
python如何实现数据的线性拟合
2019/07/19 Python
django基础学习之send_mail功能
2019/08/07 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
python Zmail模块简介与使用示例
2020/12/19 Python
Python 实现一个简单的web服务器
2021/01/03 Python
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
史蒂夫·马登加拿大官网:Steve Madden加拿大
2017/11/18 全球购物
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
英国著名的美容护肤和护发产品购物网站:Lookfantastic
2020/11/23 全球购物
经典演讲稿汇总
2014/05/19 职场文书
幼儿园教师暑期培训心得体会
2016/01/09 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python