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 相关文章推荐
ExtJS下grid的一些属性说明
Dec 13 Javascript
Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
Mar 12 Javascript
css transform 3D幻灯片特效实现步骤解读
Mar 27 Javascript
jQuery文件上传插件Uploadify使用指南
Jun 05 Javascript
原生JS实现美图瀑布流布局赏析
Sep 07 Javascript
JavaScript中SetInterval与setTimeout的用法详解
Nov 10 Javascript
JavaScript实现树的遍历算法示例【广度优先与深度优先】
Oct 26 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
Mar 13 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
Sep 03 Javascript
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
Apr 13 Javascript
JS实现扫码枪扫描二维码功能
Jan 03 Javascript
vue实现放大镜效果
Sep 17 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新手入门学习方法
2011/05/08 PHP
php实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
2016/06/12 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
非常好的js代码
2006/06/27 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
简单介绍JavaScript的变量和数据类型
2015/06/03 Javascript
关于Javascript回调函数的一个妙用
2016/08/29 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
JS+html5制作简单音乐播放器
2020/09/13 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
2017/04/07 Javascript
基于JS对象创建常用方式及原理分析
2017/06/28 Javascript
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
浅谈vue-router 路由传参的方法
2017/12/27 Javascript
ajax与jsonp的区别及用法
2018/10/16 Javascript
vscode配置vue下的es6规范自动格式化详解
2019/03/20 Javascript
开发中常用的25个JavaScript单行代码(小结)
2019/06/28 Javascript
解决layui使用layui-icon出现默认图标的问题
2019/09/11 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
解决vant-UI库修改样式无效的问题
2020/11/03 Javascript
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
对Python新手编程过程中如何规避一些常见问题的建议
2015/04/01 Python
Python 函数返回值的示例代码
2019/03/11 Python
如何把外网python虚拟环境迁移到内网
2020/05/18 Python
解决HTML5手机端页面缩放的问题
2017/10/27 HTML / CSS
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
HomeAway澳大利亚:预订你的度假屋,公寓、度假村、别墅等
2019/02/20 全球购物
企业承诺书怎么写
2014/05/24 职场文书
公司应聘求职信
2014/06/21 职场文书
五好家庭申报材料
2014/12/20 职场文书
先进班组材料范文
2014/12/25 职场文书
给老婆的检讨书
2015/01/27 职场文书
黑白记忆观后感
2015/06/18 职场文书
培训简讯范文
2015/07/20 职场文书