<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script type="text/javascript">
(function(){
//颜色动画插件 收录 前端网 halcheung 大侠的笔记。网址 http://www.w3cfuns.com/notes/17953/6ceda0bfa4a98d2d1a8c03fb638bae4e.html
// store the jq animate function temporarily
var _anim = $.fn.animate;
// override jq animate function
$.fn.extend({
animate: function (styles, speed, easing, callback) {
if (typeof styles == "object") {
var colorStyles = null,
that = this;
for (var style in styles) {
// init colorStyle object
if (!colorStyles && /color/gi.exec(style)) colorStyles = {};
// get the color styles
if (style == "color") {
colorStyles.color = styles[style];
} else if (style == "background-color" || style == "backgroundColor") {
colorStyles.backgroundColor = styles[style];
} else if (style == "border-color" || style == "borderColor") {
colorStyles.borderColor = styles[style];
} else if (style == "border-top-color" || style == "borderTopColor") {
colorStyles.borderTopColor = styles[style];
} else if (style == "border-right-color" || style == "borderRightColor") {
colorStyles.borderRightColor = styles[style];
} else if (style == "border-bottom-color" || style == "borderBottomColor") {
colorStyles.borderBottomColor = styles[style];
} else if (style == "border-left-color" || style == "borderLeftColor") {
colorStyles.borderLeftColor = styles[style];
}
delete styles[style];
}
// if check color styles positive
if (colorStyles) {
// color animation class
function animColor() {
// color animation function
this.anim = function (colorStyle, targetStyleColor) {
targetStyleColor = formatColor(targetStyleColor);
var currentColor = formatColor($(that).get(0).style[colorStyle]),
step = calcStep(currentColor, targetStyleColor);
changeColor(colorStyle, currentColor, targetStyleColor, step);
};
// color value step of animation
function calcStep(startColor, endColor) {
var maxDiff = -1, animStep = 1;
for (var i = 0; i < 3; i++) {
if (Math.abs(endColor[i] - startColor[i]) > maxDiff) {
maxDiff = Math.abs(endColor[i] - startColor[i]);
}
}
animStep = Math.floor(maxDiff / (speed / 20));
//console.log(maxDiff + "," + speed);
animStep = !animStep ? 1 : animStep;
return animStep;
}
// set the middle frame color of element
function changeColor(colorStyle, middleStyle, toStyle, step) {
middleStyle = changeColorStep(middleStyle, toStyle, step);
$(that).get(0).style[colorStyle] = "rgb(" + middleStyle[0] + "," + middleStyle[1] + "," + middleStyle[2] + ")";
if (middleStyle[0] == toStyle[0] && middleStyle[1] == toStyle[1] && middleStyle[2] == toStyle[2]) {
$(that).get(0).style[colorStyle] = hexColor(middleStyle);
return;
}
setTimeout(function () {
changeColor(colorStyle, middleStyle, toStyle, step);
}, 20);
}
// calculate step color
function changeColorStep(curClr, tgtClr, step) {
for (var i = 0; i < 3; i++) {
if (curClr[i] < tgtClr[i]) {
curClr[i] += step;
if (curClr[i] > tgtClr[i]) curClr[i] = tgtClr[i];
} else if (curClr[i] > tgtClr[i]) {
curClr[i] -= step;
if (curClr[i] < tgtClr[i]) curClr[i] = tgtClr[i];
}
}
return curClr;
}
// convert hex color to rgb color
function formatColor(styleColor) {
if (!styleColor) {
return [0, 0, 0];
} else {
var r = g = b = 0;
if (/^#[a-f0-9]{3}$/gi.exec(styleColor)) {
r = parseInt(styleColor.substr(1, 1) + styleColor.substr(1, 1), 16);
g = parseInt(styleColor.substr(2, 1) + styleColor.substr(2, 1), 16);
b = parseInt(styleColor.substr(3, 1) + styleColor.substr(3, 1), 16);
} else if (/^#[a-f0-9]{6}$/gi.exec(styleColor)) {
r = parseInt(styleColor.substr(1, 2), 16);
g = parseInt(styleColor.substr(3, 2), 16);
b = parseInt(styleColor.substr(5, 2), 16);
} else if (styleColor.toLowerCase().indexOf("rgb") != -1) { // rgb
styleColor = styleColor.toLowerCase().split(/\(|\)/gi)[1].split(',');
r = styleColor[0].trim() * 1;
g = styleColor[1].trim() * 1;
b = styleColor[2].trim() * 1;
}
return [r, g, b];
}
}
// convert rgb color to hex color
function hexColor(rgb) {
var r = ("0" + rgb[0].toString(16)).substr(-2),
g = ("0" + rgb[1].toString(16)).substr(-2),
b = ("0" + rgb[2].toString(16)).substr(-2);
return "#" + r + g + b;
}
} // play color animation
for (var styl in colorStyles) {
var anim = new animColor();
anim.anim(styl, colorStyles[styl]);
anim = null;
}
}
} // most important step: get the original function of jq animate
return _anim.apply(this, [styles, speed, easing, callback]);
}
});
})();
(function(){
$.fn.dragToDrop = function(fun){
var eventStr = "dragleave drop dragenter dragover";
$(document).on(eventStr,function(e){
e.preventDefault(); // 禁用 document 默认行为
});
$(this).on(eventStr,function(e){
e.preventDefault();
var files;
if(e.type == "drop") files = e.originalEvent.dataTransfer.files; //获取文件对象
fun(files);
})
return this;
} })();
(function(){ //列队播放音频文件
var music;
var i = 0;
var flag = false;
var playlist = [];
$.audio = function(data){
playlist.push(data);
//console.log(music)
if(!music || $.type(music) != "object"){
music = new Audio(data);
music.play();
}
$(music).on("play",function(){
flag = false;
});
$(music).on('ended',function(){
if(flag) return;
flag = true;
i++;
if(i >= playlist.length){
music = null;
return;
}
this.src = playlist[i];
this.play();
return;
});
}
})();
(function(){
$.readFileData = function(obj, fun){ //读取文件内容
var reader = new FileReader();//新建一个FileReader
reader.readAsDataURL(obj, "UTF-8");//以base64编码方式读取文件
reader.onload = function(e){
fun(e.target.result);
}
}
$.eachFiles = function(files){ // 遍历文件列表
var obj = $("#look ul").length > 0 ? $("#look ul") : $("<ul>").appendTo($("#look"))
var fileType = "mp3,ogg,wav,mid,midi,wma,asf";
$.each(files, function(i,n){
$.readFileData(n, function(data){
obj.append($("<li>").css({"text-overflow":"ellipsis","white-space":"nowrap"}).text(n.name + " - " + data));
if(fileType.indexOf(n.name.split(".")[1]) > -1) $.audio(data);
});
});
}
Number.prototype.toFormatString = function(n,d){
return (Array(d).join(0) + this.toString(n)).slice(-d);
}
window.rgb = function (a,b,c){
return "#" + a.toFormatString(16,2) + b.toFormatString(16,2) + c.toFormatString(16,2);
}
window.compileString = function(str){
return new Function("return " + str)();
}
window.RBGToHex = function(str){
return compileString(str);
}
window.HexToRGB = function(str){
if(str.length == 4) str = str.replace(/^#([A-Fa-f0-9]{1})([A-Fa-f0-9]{1})([A-Fa-f0-9]{1})/,"$1,$2,$3")
if(str.length == 7) str = str.replace(/^#([A-Fa-f0-9]{2})([A-Fa-f0-9]{2})([A-Fa-f0-9]{2})/,"$1,$2,$3")
var arr = str.split(",");
$.each(arr,function(i,n){
if(n.length == 1){
if(parseInt(n,16) > 0) n += n;
}
arr[i] = parseInt(n,16)
});
return "rgb(" + arr.join(",") + ")";
}
})();
$(function(){
$("#form input[name='fileTrans']").change(function(){
if (!(window.File || window.FileReader || window.FileList || window.Blob)) {
alert('你妈喊你换Chrome浏览器啦');
return;
}
var files = $(this).prop('files');//通过文件域获取到文件列表
if(!files || files.length == 0){
alert('请选择文件');
return;
}
$.eachFiles(files);
}).dragToDrop(function(files){ //通过拖拽获取文件列表
var flieStyle = $("#flieStyle");
if(files && files.length > 0){
$.eachFiles(files);
flieStyle.animate({"border-color":"#000"}, 10, "swing");
return;
}
var color = RBGToHex(flieStyle.css("border-color")) == RBGToHex(HexToRGB("#0ff")) ? "#000" : "#0ff";
//console.log(RBGToHex(HexToRGB(color)))
flieStyle.animate({"border-color":color}, 10, "swing")
});
});
</script>
</head>
<body>
<h1>媒体文件 转 base64 编码</h1>
<div style="font-size:12px;color:gray;margin-bottom:10px;">PS:选择一个或多个文件,如果是音频格式并且您的浏览器支持,便可能会听到 base64 编码后的声音。</div>
<form id="form" >
<div id="flieStyle" style="border:dashed 1px black;background-color:snow;width:150px;height:150px;position:relative;line-height:2rem;font-size:12px;margin:30px auto;">
<input type="file" name="fileTrans" multiple="multiple" style="width:150px;height:150px;position:absolute;opacity:0;background-color:black;">
<span style="text-align:center;width:100%;margin-top:2.5rem;display:block;"><input type="button" value="点击选择文件"><br>拖动文件到此框中</span>
</div>
</form>
<div id="look"></div>
</body>
</html>

媒体文件 转 base64 编码

PS:选择一个或多个文件,如果是音频格式并且您的浏览器支持,便可能会听到 base64 编码后的声音。
拖动文件到此框中
 

媒体文件audio 转 base64 编码 (利用 FileReader & Audio 对象)的更多相关文章

  1. php 将图片文件转成base64编码的方法

    php 将图片文件转成base64编码的方法<pre><?php /** 文件转base64输出 * @param String $file 文件路径 * @return Strin ...

  2. 图片文件转换成Base64编码实现ajax提交图片

    //上传头像图片 function uploadHead(imgPath) { console.log("imgPath = " + imgPath); var image = n ...

  3. 使用base64编码把背景添加到CSS文件中

    最近博客背景图片的外链挂了,没办法,只好另找办法. 在博客园后台,有一个“文件”菜单,可以上传自己的文件,我就打算把图片传到里面.但却发现了一个很反人性的设置:不允许上传jpg,png文件,允许上传的 ...

  4. base64编码处理大文件

    在做项目的时候遇到需要将文件转为base64编码,并存储在文件中. 在将文件转为base64编码是会将文件读入内存,进行base64编码,输出到文件中.代码入下: FileInputStream st ...

  5. 减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)

    在网站开发过程中,对于页面的加载效率一般都想尽办法求快.那么,怎么让才能更快呢?减少页面请求 是一个优化页面加载速度很好的方法.上一篇博文我们讲解了 “利用将小图标合成一张背景图来减少HTTP请求”, ...

  6. java 按字节读写二进制文件(Base64编码解码)

    最近在做项目时遇到这样一个需求:依次读取本地文件夹里所有文件的内容,转为JSON,发送到ActiveMQ的消息队列, 然后从MQ的消息队列上获取文件的信息,依次写到本地.常见的文件类型,比如.txt ...

  7. Java对网络图片/本地图片转换成Base64编码和解码

    一.将本地图片转换成Base64编码字符串 /** * 将本地图片转换成Base64编码字符串 * * @param imgFile 图片目录路径 * @return */ public static ...

  8. delphi将图片转换成Base64编码函数

    {************************************************************************** 名称: BaseImage 参数: fn: TF ...

  9. Atitit. 二进制数据ascii表示法,与base64编码解码api 设计标准化总结java php c#.net

    Atitit. 二进制数据ascii表示法,与base64编码解码api 设计标准化总结java php c#.net 1. Base64编码, 1 1.1. 子模式 urlsafe Or  url  ...

随机推荐

  1. SNMP中MIB2所有主要节点

    系统组:system组包含以下对象集(.1.3.6.1.2.1.1): 对象名:sysDescr(1) OID:system.1 对象类型:DisplayString[255] 访问模式:只读 描述: ...

  2. BI生态圈常用端口使用配置总结

    Hadoop集群的各部分一般都会使用到多个端口,有些是daemon之间进行交互之用,有些是用于RPC访问以及HTTP访问.而随着Hadoop周边组件的增多,完全记不住哪个端口对应哪个应用,特收集记录如 ...

  3. 慢查询日志和profiling

    MySQL调优三步: 慢查询 (分析出现出问题的sql) Explain (显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句) Profile ...

  4. [转] offsetParent 到底是哪一个?

    正文 不同情况 没有已定位的父节点,且自身position:relative的DIV元素的offsetParent为BODY 没有已定位的父节点,且自身position: absolute的DIV元素 ...

  5. net mvc webapi 实用

    asp.net mvc webapi 实用的接口加密方法   在很多项目中,因为webapi是对外开放的,这个时候,我们就要得考虑接口交换数据的安全性. 安全机制也比较多,如andriod与webap ...

  6. tail -f 与 tail -F的区别

    使用tail -f监控某个文件,将在另一个窗口将该文件删除后,然后再新创建,那么我们会发现tail -f的监制失效了.而使用tail -F会再次进行监控.

  7. matlab中等间距坐标距离表示不等间距数据值,以及延伸

    1.问题 平时只是用了一下plot的简单画图. x轴或者y轴的大小比例都是按照系统自动的生成. 但是如果出现巨大的比例的时候,如何保证在另一个轴上可以同等机会展示结果呢? 2.程序 这里是自己书写的程 ...

  8. UG中STP203和STP214的区别

    UG转档STP203,STP214的区别:STP214转出的图档将保留原图属性,例如所在图层,曲面颜色,装配组件名称等.STP203没有上述功能.

  9. python 修改文件中的内容

    在python的文件操作中,是没有办法对文件中具体某行或者某个位置的内容进行局部的修改的,如果需要对文件的某一行内容进行修改,可以先将文件中的所有的内容全部读取出来,再进行内容判断,是否是需要修改的内 ...

  10. spring boot学习总结(一)-- 基础入门 Hello,spring boot!

    写在最前 SpringBoot是伴随着Spring4.0诞生的: 从字面理解,Boot是引导的意思,因此SpringBoot帮助开发者快速搭建Spring框架: SpringBoot帮助开发者快速启动 ...