2014年7月8日火曜日

8進数対策(bash)

日付を計算するシェルで以下のエラーが発生。

08: value too great for base (error token is "08") 

 今日は8日。 `date +%d`は08となる。

 よくあることだが頭に0がつく数字は8進数と見なされる。 

そのため、エラーが生じる。 
→頭の0をとってやれば良い。 
 →`date +%d | sed s/^0//` 

 以上。

2014年6月15日日曜日

ImageMagickを使って、EXIF情報に基づいて回転&縮小(BASH)

PowerPointに画像を入れて、フォトアルバムを作成するときの不具合への対処。


■使い方
\ls ./*.jpg > filelist.txt
./(下記のスクリプトファイル) < filelist.txt

■EXIF情報に基づいて回転
#!/bin/bash -xv 
 
mkdir -p ./rotated 

while read fn
do
    rotate_type=`identify -format "%[Exif:orientation]" "$fn"`
    echo $rotate_type
    case $rotate_type in
        6)
            deg="+90"
            ;;
        8)
            deg="-90"
            ;;
        3)
            deg="+180"
            ;;
        *)
            deg="0"
    esac

    if [ $deg -ne "0" ]; then
        convert -rotate $deg "$fn" "./rotated/$fn"
    fi

done

exit 0


■縮小
通常「 -geometry 縦x横」の指定であるが、「 -geometry x横」と指定することで、アスペクト比を保ったままサイズを固定(横サイズ優先)できる。
(雑な説明です。厳密な説明は省略します。)
#!/bin/bash -xv

mkdir -p ./converted

while read fn
do
 echo $fn
 convert -geometry x768 "$fn" "./converted/$fn"
done

exit 0


問題
・EXIF対応の画像ビューアでは、上記方法で補正済み状態から更にEXIFの情報に基づいて回転が行われるため、回転された状態で表示されてしまう。
→EXIF側の回転角を0にしなければならない。
 →時間がないので、後日(たぶんやらない。)



2014年3月28日金曜日

そういえば

H25秋NWスペシャリスト合格しました。
以上。