1 Star 0 Fork 0

Sterne Lee / buffer-images

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
main.js 1.75 KB
一键复制 编辑 原始数据 按行查看 历史
Sterne Lee 提交于 2017-04-28 12:15 . add index.js main.js index.html
const fs = require('fs');
// read images dir
// 读取图片的目录
const paths = "images";
let pics = [];
function readFileList(path) {
var files = fs.readdirSync(path);
files.forEach(function (itm, index) {
var stat = fs.statSync(path + "/" + itm);
if (stat.isDirectory()) {
var newPath = path + "/" + itm;
readFileList(newPath);
} else {
var obj = path + "/" + itm;
pics.push(obj);
}
})
}
readFileList(paths);
// 初始化 arraybuffer
let buffers = new ArrayBuffer(0);
let s = 0, n = 0;
for(let i = 0; i < pics.length; i++){
n += i;
}
for(let i = 0; i < pics.length; i++){
let pic = pics[i],
l = pic.length;
fs.readFile(pic, function(err,data){
if(err) throw err;
let m = 0,
v = data,
q = data.length;
let a = new ArrayBuffer(l*4+4+4+q),
d = new DataView(a);
d.setUint32(0,l,!1);
m += 4;
for(let j = 0; j < l; j++){
let c = pic.charCodeAt(j);
d.setUint32(m,c,!1);
m += 4;
}
d.setUint32(m,q,!1);
m += 4;
for(let k = 0; k < q; k++){
d.setUint8(m,v[k],!1);
m += 1;
}
buffers = _appendBuffer(buffers,a);
s += i;
// 判断当前是否读完
if(s == n){
let imgv = new Uint8Array(buffers);
fs.writeFile('out.png', imgv, (err) => {
if (err) throw err;
console.log('It\'s saved!');
});
}
});
}
// arraybuffer 合并
var _appendBuffer = function(buffer1, buffer2) {
var tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);
tmp.set(new Uint8Array(buffer1), 0);
tmp.set(new Uint8Array(buffer2), buffer1.byteLength);
return tmp.buffer;
};
JavaScript
1
https://gitee.com/sternelee/buffer-images.git
git@gitee.com:sternelee/buffer-images.git
sternelee
buffer-images
buffer-images
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891