LoginSignup
3
5

More than 5 years have passed since last update.

全ての画像ファイルをEPSファイルに変換する

Last updated at Posted at 2014-01-10

卒論書いているときにEPSファイルへの変換面倒なので。

さぼり 気分転換に書きました
Texる時に便利かも

機能
・画像ファイルを全てepsファイルに変えます
・また、ハッシュ値を見て、変化があったものにだけ処理
・対象ファイル:jpg,JPG,png,PNG

実験環境
・MacOSX10.9
・md5コマンドとconvertコマンドがうごく(imagemagickだったかを入れると入る。)
・その他のコマンドもいるけど、普通入ってると思う(自分が手動で入れた覚えがないため)

実行方法
1:下記ディレクトリ構造にする
a_dir
|
|-----下記のシェルスクリプト.sh
|
|-----/loadpic
|
|-----/savepic
|
|-----/savehash
|
|

2:ファイル準備
画像ファイルを全てloadpicディレクトリにコピーする

3:シェルスクリプト実行
a_dirディレクトリに移動して、『sh 下記のシェルスクリプト.sh』 を実行

4:EPSファイルができる
savepicにEPSファイルがある。

以降、2〜4を繰り返せばよい。(2は、変化や新規の物のみ)

convert.sh
#!/bin/sh

#########################################################
#   画像ファイルをEPSファイルへ変換           
#                           
#                           
#   対象ファイル:jpg,JPG,png,PNG          
#                       
#   使用するコマンド:convert,md5
#   環境
#   OS:Mac OS X 10.9
#
#
#
#   
#########################################################
#グローバル変数
#グローバル変数:コマンド
C_CONVERT="/usr/local/bin/convert" #画像変換コマンド
C_HASH="/sbin/md5" #ハッシュ値のコマンド

#グローバル変数:ディレクトリ
D_LOADPIC="./loadpic/" #画像の読み込み先
D_SAVEPIC="./savepic/" #画像の保存先
D_SAVEHASH="./savehash/" #ハッシュの保存、読み込み先

#グローバル変数:ファイル系
F_HASH_EXTENSION=".txt" #ハッシュファイルの拡張子
F_EPS_EXTENSION=".eps" #epsファイルの拡張子
#########################################################

#関数
myconvert() {

        #編集準備
        loadfilename=$1 #引数1つ目:読み込みファイル名
        loadfilenamepass=$D_LOADPIC$loadfilename #読み込みファイルのパス
        savefilehashfilepass=$D_SAVEHASH$loadfilename$F_HASH_EXTENSION #ハッシュファイル相対パス
        savefilefilenamepass=$D_SAVEPIC${loadfilename%.*}$F_EPS_EXTENSION #保存ファイルのパス

        #ハッシュファイルの存在を調べて、なければつくる
        if [ ! -f $savefilehashfilepass ]
        then
            echo "新しいファイル発見:"$loadfilename
            touch $savefilehashfilepass #ハッシュファイル作成 
        fi

        #前回のファイルのハッシュ値取得
        before_loadfilehashdata=`cat "${savefilehashfilepass}" ` 

        #現ファイルのハッシュ値取得

        now_loadfilehashdata=`"${C_HASH}" "$loadfilenamepass" |cut -d " " -f4 `

        #ハッシュ値比較
        if [ ! "$now_loadfilehashdata" = "$before_loadfilehashdata" ];
        then
            #違う場合
            echo "ハッシュ不一致です"
            echo "$now_loadfilehashdata" > "$savefilehashfilepass" #ハッシュ値保存
            `"${C_CONVERT}" "$loadfilenamepass"  "$savefilefilenamepass"` #EPS変換
        else
            #一緒の場合
            echo "ハッシュ一致"
        fi


}

#準備
#存在を確かめる:画像変換コマンド
if [ ! `which "${C_CONVERT}"` ];
then
    echo "convertコマンドがありません。"
    exit
else
    echo ""
    #echo "convertコマンド発見"
fi

#存在を確かめる:ハッシュコマンド
if [ ! `which "${C_HASH}"` ]; 
then
    echo "hashコマンドがありません。"
    exit
else
    echo ""
    #echo "hashコマンド発見"
fi

#存在を確かめる:画像の読み込み元のディレクトリ
if [ ! -d $D_LOADPIC ]
then
    echo "loadpicがありません。"
    mkdir $D_LOADPIC #画像読み込みディレクトリ作成
    exit
fi

#存在を確かめる:画像の書き込みのディレクトリ
if [ ! -d $D_SAVEPIC ]
then
    echo "savepicがありません。"
    mkdir $D_SAVEPIC #画像書き込みディレクトリ作成    
fi

#存在を確かめる:ハッシュ読み込み書き込みのディレクトリ
if [ ! -d $D_SAVEHASH ]
then
    echo "hashdirがありません。"
    mkdir $D_SAVEHASH #ハッシュディレクトリ作成 
fi







#画像変換
#画像変換:JPG 
FIND_EXETENSION="*.JPG"
FILE_NUM=`ls loadpic|grep JPG |wc -l`
if [ $FILE_NUM != 0  ]
then
    for infile in $D_LOADPIC$FIND_EXETENSION; 
    do  
        FIND_FILENAME=`echo "$infile" |cut -d "/" -f3`
        myconvert $FIND_FILENAME
        #convert $infile ${infile%.*}.eps; 
    done
fi



#画像変換:PNG 
FIND_EXETENSION="*.PNG"
FILE_NUM=`ls loadpic|grep PNG |wc -l`
if [ $FILE_NUM != 0  ]
then
    for infile in $D_LOADPIC$FIND_EXETENSION; 
    do  
        FIND_FILENAME=`echo "$infile" |cut -d "/" -f3`
        myconvert $FIND_FILENAME
        #convert $infile ${infile%.*}.eps; 
    done
fi


#画像変換:jpg
FIND_EXETENSION="*.jpg"
FILE_NUM=`ls loadpic|grep jpg |wc -l`
if [ $FILE_NUM != 0  ]
then
    for infile in $D_LOADPIC$FIND_EXETENSION; 
    do  
        FIND_FILENAME=`echo "$infile" |cut -d "/" -f3`
        myconvert $FIND_FILENAME
        #convert $infile ${infile%.*}.eps; 
    done
fi

#画像変換:png
FIND_EXETENSION="*.png"
FILE_NUM=`ls loadpic|grep png |wc -l`
if [ $FILE_NUM != 0  ]
then
    for infile in $D_LOADPIC$FIND_EXETENSION; 
    do  
        FIND_FILENAME=`echo "$infile" |cut -d "/" -f3`
        myconvert $FIND_FILENAME
        #convert $infile ${infile%.*}.eps; 
    done
fi

改造は、例の下の方を変えるだけ

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5