Skip to content

Instantly share code, notes, and snippets.

@seektan
Last active October 30, 2015 08:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save seektan/3f9d54abd6f207fdfedf to your computer and use it in GitHub Desktop.
Save seektan/3f9d54abd6f207fdfedf to your computer and use it in GitHub Desktop.
批量处理用中文命名的图片,获取新旧文件名和图片对应关系,用于页面展示
/**
作用
批量处理用中文命名的图片,获取新旧文件名和图片对应关系,用于页面展示
使用说明
1.把本段代码存为rename.js文件文件放到需要重命名的图片文件夹
2.根据情况修改下面参数中的图片前缀(prefix),选择生成数据的格式(oformat),图片开始的序号(startnum)
3.用node运行本js文件
3.1拖拽文件运行:把本文件拖拽到node.exe上运行(需先安装nodejs)
3.2命令行模式运行
3.2.1进入命令行窗口(window运行cmd),进入存放图片的目录 x:\\xxxxx\你的图片目录
3.2.2运行node命令node rename.js
**/
var path = require("path");
var fs = require("fs");
var rootPath = __filename;//获取图片目录
var prefix = "n_",//新图片前缀
startnum = 10,//新图片开始的序号
outfile = "list.txt",//生成的文件名,包含原图片和对应的新图片信息
tformat = [
'{"title":"|tit|", "oldimg":"|oimg|", "newimg":"|nimg|"},\n',//生成的内容格式:对象
'["|tit|", "|oimg|", "|nimg|"],\n',//生成的内容格式:数组
'<li><img src="|nimg|" alt="|tit|" /></li>\n'//生成的内容格式:HTML
],
oformat = tformat[0],
imgReg = /\.(jpg|png|gif|bmp)$/i,
tarr = [], alen, cindex=0;
parseIndex(path.dirname(rootPath));
//索引目录下的图片
function parseIndex(dir){
fs.readdir(dir,function(error,files){
var len = files.length,
imgArr = [];
for(var i=0;i<len;i++){
var filepath = dir+"\\"+files[i];
//只处理图片
if(imgReg.test(filepath)){
imgArr.push(filepath);
}
}
alen = imgArr.length;
for(var j=0;j<alen;j++){
renameImg(imgArr[j],j);
}
});
}
//单个图片处理
function renameImg(filepath,n){
fs.stat(filepath,function(err,stats){
if(stats.isFile()){
var filename = path.basename(filepath),
parentDir =path.dirname(filepath),
parentDirname = path.basename(parentDir),
newName = prefix + (startnum + n) + "." + filename.split(".").pop(),
newPath =parentDir+"\\"+newName;
fs.rename(filepath,newPath);
console.log(filename +" ==>> "+ newName);
var _o = {
"tit":filename.substring(0,filename.lastIndexOf(".")),
"oimg":filename,
"nimg":newName
}
tarr.push( oformat.replace(/\|tit\|/g,_o.tit).replace(/\|oimg\|/g,_o.oimg).replace(/\|nimg\|/g,_o.nimg) );
cindex += 1;
if(cindex===alen){
var _ta = tarr[alen-1];
tarr[alen-1] = _ta.substring(0,_ta.lastIndexOf(","))+"\n";
writeInfo();
}
}
});
}
//生成图片对应关系文件,存在则清空文件内容再重写
function writeInfo(){
fs.open(outfile,"w",function(e,fd){
if(e) throw e;
var istr = tarr.join("")
if(/,\n/.test(oformat)) istr = '[\n'+istr+']\n';
fs.write(fd, istr, 0, 'utf8', function(e){
if(e) throw e;
fs.closeSync(fd);
})
});
}
1、数组对象
[
{"title":"三周年", "oldimg":"三周年.jpg", "newimg":"n_10.jpg"},
{"title":"京剧", "oldimg":"京剧.jpg", "newimg":"n_11.jpg"},
{"title":"双鱼座", "oldimg":"双鱼座.jpg", "newimg":"n_13.jpg"},
{"title":"侠之风范√", "oldimg":"侠之风范√.jpg", "newimg":"n_12.jpg"},
{"title":"喜庆元旦", "oldimg":"喜庆元旦.jpg", "newimg":"n_14.jpg"},
{"title":"戎马胡服√", "oldimg":"戎马胡服√.jpg", "newimg":"n_16.jpg"},
{"title":"无双盛世√", "oldimg":"无双盛世√.jpg", "newimg":"n_17.jpg"},
{"title":"欢度新春", "oldimg":"欢度新春.jpg", "newimg":"n_18.jpg"},
{"title":"天秤座√", "oldimg":"天秤座√.jpg", "newimg":"n_15.jpg"},
{"title":"福虎衣√", "oldimg":"福虎衣√.jpg", "newimg":"n_20.jpg"},
{"title":"白羊座", "oldimg":"白羊座.jpg", "newimg":"n_19.jpg"},
{"title":"程王爷√", "oldimg":"程王爷√.jpg", "newimg":"n_21.jpg"},
{"title":"笙歌夜衣√", "oldimg":"笙歌夜衣√.jpg", "newimg":"n_22.jpg"},
{"title":"萌萌哒", "oldimg":"萌萌哒.jpg", "newimg":"n_25.jpg"},
{"title":"紫裘√", "oldimg":"紫裘√.jpg", "newimg":"n_24.jpg"},
{"title":"糖果小丑", "oldimg":"糖果小丑.jpg", "newimg":"n_23.jpg"}
]
2、HTML代码
<li><img src="n_10.jpg" alt="三周年" /></li>
<li><img src="n_12.jpg" alt="侠之风范√" /></li>
<li><img src="n_11.jpg" alt="京剧" /></li>
<li><img src="n_13.jpg" alt="双鱼座" /></li>
<li><img src="n_14.jpg" alt="喜庆元旦" /></li>
<li><img src="n_15.jpg" alt="天秤座√" /></li>
<li><img src="n_16.jpg" alt="戎马胡服√" /></li>
<li><img src="n_17.jpg" alt="无双盛世√" /></li>
<li><img src="n_18.jpg" alt="欢度新春" /></li>
<li><img src="n_19.jpg" alt="白羊座" /></li>
<li><img src="n_20.jpg" alt="福虎衣√" /></li>
<li><img src="n_21.jpg" alt="程王爷√" /></li>
<li><img src="n_23.jpg" alt="糖果小丑" /></li>
<li><img src="n_22.jpg" alt="笙歌夜衣√" /></li>
<li><img src="n_24.jpg" alt="紫裘√" /></li>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment