做在线聊天工具时从网上找了一些关于图片处理的代码,现把代码整理下发出来以备以后查询。废话不多说,直接上代码
// 粘贴图片(返回文件数据)
function pasteImage(e) {
var imgFile = null,
pasteEvent = e.originalEvent,
items = (pasteEvent.clipboardData && pasteEvent.clipboardData.items) ? pasteEvent.clipboardData.items : [];
for (var i = 0; i < items.length; i++) {
var item = items[i];
if (~item.type.indexOf("image")) {
imgFile = item.getAsFile();
break;
}
}
e.preventDefault();
return imgFile;
}
// 把文件数据转换为base64格式(结果将以参数的形式传给回调函数)
function fileToBase64(file, callback) {
if (!window.FileReader) {
alert("您的浏览器不支持数据转换,如需该功能请升级您的浏览器!");
return;
}
var reader = new FileReader();
reader.onload = function (event) {
if (callback && typeof callback == "function") callback(event.target.result);
}
reader.readAsDataURL(file);
}
// 将base64数据转换为文件流
function dataURLtoFile(dataurl) {
var arr = dataurl.split(','),
mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n),
tempArr = mime.split('/'),
filename = tempArr[1] ? (tempArr[0] + '.' + tempArr[1]) : (tempArr[0] + '.png');
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
var theBlob = new Blob([u8arr], { type: mime });
theBlob.lastModifiedDate = new Date();
theBlob.name = filename;
return theBlob;
}