前回作成したbashスクリプトに手を加えてみました。
ディレクトリ内の画像を一つずつwaifu2xで拡大するbashスクリプト
コマンドラインで画像を拡大するソフトwaifu2x-converter-cppを試したところ、拡大することによる境界線のぼやけが少なく結構シャープな仕上がりなりました。このソフトはWebサービスのwaifu2xから変換機能のみ抽出したコマン...
基本的に特定のディレクトリ内にある画像ファイルを変換し指定のディレクトリに出力する作りは前回と同様です。
異なる点としてはCRONで自動実行させることを想定しています。
ubuntuで定期的にスクリプトを実行【cron】
パソコンをサーバとして運用していると定期的に自動実行してほしい仕事が出てきます。cronは設定ファイルに実行したいコマンドと時刻を記述することで自動実行する機能です。ubuntuに限らず多くのunix系osで採用されている機能です。wind...
出来ればディレクトリを監視しファイルが置かれたら実行するような仕組みが良いのかもしれませんが、数分から数時間ほど要する処理に即時性はいらないだろうということでCRONをで5分ごとにスクリプトを実行するようにします。
5分間で処理が終了しない場合次のスクリプトが実行してしまうのを防止するため、スクリプト内で二重起動を禁止するコードを導入してみました。
また、出力ファイルはPNG形式にしているので「OptiPNG」で最適化することによりファイルサイズの縮小を狙います。
PNGファイルを最適化するソフト「OptiPNG」を試してみる
PNGファイルを最適化しファイルサイズを小さくしてくれるソフト「OptiPNG」を試してみたいと思います。インストール以下のサイトから「optipng-0.7.7-win32.zip」ダウンロードし適当なフォルダを作成し展開。実行OptiP...
「waifu2x-converter-cpp」にしても「OptiPNG」にしても非常に重たい処理で、実行するとパソコンのリソースを占有してしまうので、専用のパソコンを用意した方が良いです。共有フォルダを処理対象することで、共有フォルダに画像ファイルを置くと、そのうち拡大処理をしてくれる仕掛けになります。
ファイル名:waifu2x-cron.sh
#!/usr/bin/bash
#
# waifu2xによる画像拡大処理
# 二重起動防止版
#
<< CRON
crontab -e
# 五分おきに実行
*/5 * * * * ~/sh/waifu2x-cron.sh >> ~/sh/waifu2x-cron.log 2>&1
CRON
# 倍率
RATIO=2
# 変換前
#FILES="/mnt/smb/work/in_x${RATIO}/*.*"
FILES="/h/sh/in_x${RATIO}/*.*"
# 変更後
#OUTDIR="/mnt/smb/waifu2x/out_x${RATIO}/"
OUTDIR="/h/sh/out_x${RATIO}/"
# 二重起動禁止フラグ
EXEC=$0.exec
# 二重起動の禁止
if [ -d $EXEC ]; then
echo "実行中"
exit
else
mkdir $EXEC
fi
for FILE in $INFILES; do
if [ -f $FILE ]; then
# 出力パスの生成
OUTFILE="${OUTDIR}${FILE##*/}"
# 拡張子をPNGに設定
OUTFILE=${OUTFILE%.*}.PNG
# 拡大処理 2倍
/usr/local/bin/waifu2x-converter-cpp -s -t 1 -f png -c 0 --noise-level 3 --scale-ratio $RATIO -m noise-scale -i $FILE -o $OUTFILE
# 最適化
/usr/bin/optipng $OUTFILE
# 元ファイルの削除
rm $FILE
echo $OUTFILE
fi
done
# 二重起動禁止の解除
rmdir $EXEC
echo "終了"
コメント