极其简陋的对图像进行批处理
在用 openjpeg 对图像进行无损 JPEG2000 压缩的处理时,我有几百张图像要压缩,本来它的运行方式是在当前文件夹下输入 cmd,把要处理的图像名写上,和命名转换格式后的图像(opj_compress -i xx.bmp -o xx.j2k),就可以运行,咳咳说下这个如何弄吧,还是朋友告诉我才知道的,可能很多人知道,但不排除有些人不知道嘛。
我就想,有那种批处理方法可以循环读取文件,执行同一个操作,于是就到处查命令行 /bat 文件批处理怎么用等各种关键词,没查到直接可以套用现成的语句,就看了下for命令的用法,写了极其简陋的一句,在 openjpeg 的执行文件下存为 .bat 文件:
for /r %%i in (??????.bmp) do opj_compress -i %%i -o %%i.j2k
pause
可以运行,就是新图像的名字是 ??????.bmp.j2k,很难看,不知道怎么改,也没有指定导出到哪个文件夹,因此就和被处理的图像放在一起,还得自己复制粘贴出来。所以若有同学看到,且刚好熟悉这一方面,还望赐教更加完善的命令( ̄▽ ̄)"
再讲一讲这句命令各段的含义吧:
/r :把 .bat 文件所在的 当前目录 和 此目录下的子目录 下所有符合括号里的文件找出来,供后面的命令执行。如果 /r 后面指定了了目录,例如 /r c:\,就找出C盘里所有符合的文件啦。所以我要处理的图片的文件夹也放在这儿了
(如果是 for /d ........则只在当前目录提取)
%%i:变量,找出的文件。
(??????.bmp): 要找的文件。几个问号,就代表几个关键字,由于我图像的命名是 000000.bmp,我就写了6个问号来匹配。当然可以用*.bmp,*代表任意多个字符,这里用了正则表达式的知识应该,但是我还没接触过。(想到以前做的数据库实验了,但是忘光光辽)
do:关键字,后面接要执行的命令
opj_compress -i %%i -o %%i.j2k:这句就是 openjpeg 软件本身的命令,要做的工作了。
对了有个重命名的关键词,不知道是不是因为我的图像是从 0 开始排序,而命令行序列不能从 0 开始递增,还是这句本身有问题,反正我批处理循环重新命名没成功,下面也贴一下:
for /l %%i in (1,1,100) do ren *.j2k %%i.j2k
pause
原理就是 ren 关键词是重命名的,/l 是排序的,(1,1,100) 中,表示从 1 开始,以 1 为公差,递增100次。更详细的可以查查语法用法什么的。
上一篇: 搭建keras
下一篇: 全家福 诺基亚继续为22日新品发布会造势