その画像について以下の要求がありました。
・画質を劣化させずにファイルサイズを小さくしたい
・サムネイル表示したい
ZIPなどで圧縮してしまうとサムネイル表示が出来なくなってしまいます。
ZIPファイル内にある複数の画像のうち、最初の画像だけを表示するソフトなどはありますが、今回の用途ではZIPファイル内の複数の画像をすべてサムネイル表示する必要がありました。
BMPからPNGへの変換なら画質劣化がなく、PNG形式ならサムネイル表示が可能なのでbmp2pngというソフトを使って変換することにしました。
ついでに、変換したら元のBMPファイルは削除したいので、プログラムを作成しました。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<job> | |
<script> | |
;(function(){ | |
arg = WScript.Arguments | |
len = arg.length | |
if(!len){ return WScript.Echo('フォルダをドラッグ&ドロップしてください')} | |
AXO = function(name){return new ActiveXObject(name)} | |
fs = AXO('Scripting.FileSystemObject') | |
shell = AXO('WScript.Shell') | |
gsf2 = fs.GetSpecialFolder(2) | |
Read = function(p){var o=fs.OpenTextFile(p), s=o.AtEndOfStream?'':o.ReadAll(); o.Close(); return s} | |
RAS = function(p){return Read(p).split('\r\n')} | |
fun = function(path){return path.indexOf(' ')<0 ? path : ('"'+path+'"')} | |
getFileList=function(path){ | |
var pathTMP=gsf2+'/fileList', arr | |
shell.run('cmd /C dir /A-D /B '+path+' > '+fun(pathTMP), 0, true) | |
arr = fs.FileExists(pathTMP) ? RAS(pathTMP) : [] | |
arr.pop() | |
return arr | |
} | |
for0L=function(arr,fun){for(var i=0,L=arr.length,res;i<L;i++){if(res=fun(i,arr[i])){return res}}} | |
pathExe = fun(fs.GetParentFolderName(WScript.ScriptFullName)+'/BMP2PNG.exe') | |
arrDir = [] | |
for(i=0;i<len;i++){ arrDir[i] = arg(i) } | |
for0L(arrDir, function(i, path){ | |
for0L( | |
getFileList(fun(path+'\\*.bmp')), // ←の「\」は「/」にしてしまうとdirコマンドが「/*.bmp」というスイッチだと誤認識してしまう | |
function(i, ファイル名){ | |
var pathFile=path+'/'+ファイル名 | |
shell.run(pathExe + ' ' + fun(pathFile),0,true) | |
fs.DeleteFile(pathFile) | |
} | |
) | |
}) | |
})(); | |
</script> | |
</job> |
上記プログラムをメモ帳などにコピペして
「フォルダをこのファイルにドロップして.wsf」などのファイル名で保存して
wsfファイルと同じフォルダにvectorからダウンロードしたbmp2png.exeを移動して
先ほど作成した「~~.wsf」にBMP形式の画像ファイルが入っているフォルダをドラッグ&ドロップすれば
フォルダ内部のBMPが次々と、PNGに変換→BMP削除→PNGに変換→…となります。
ちなみに、圧縮前のBMPをZIP圧縮した場合と、BMPをPNGに変換した場合の容量を比較したら、ほとんど同等でした。
0 件のコメント:
コメントを投稿