投稿日検索
2024年11月
 123
45678910
11121314151617
18192021222324
252627282930  

カテゴリー検索

【お知らせ】
●2013年1月以降の投稿をRetinaディスプレイに対応

最新のコメント
  1. はじめまして.現在,こちらの車両群を管理している団体の者です. 2004年時点…

,

シェルスクリプトで画像処理(2)リサイズ編

MacOSXにはsipsというコマンドがすでに組み込まれているのでこれを利用します

例:デスクトップ上のprocessというフォルダ内にあるJPEG画像を、縦640pix横960pixにリサイズして上書きします

#!/bin/bash
cd /Users/psychic-wave.com/Desktop/process
sips -z 640x960 *.jpg

2行目は「cd 」(最後に半角スペース)とタイプした後、processフォルダをmi上に直接ドラッグ&ドロップしています
従ってこれ以降、2行目の記述は各自の環境で異なりますので注意してください

作業フォルダ名は適当で構いませんが、半角スペースや記号を入れたりすると後々苦労が絶えませんよ…「_」(半角アンダーバー)あたりが無難ですね

実行するとこのようになります(ここでは4枚のJPEG画像)
terminal005” title=
圧縮率を指定する場合です

#!/bin/bash
cd /Users/psychic-wave.com/Desktop/process
sips -z 640x960 -s formatOptions best *.jpg

best以外はlow/normal/high/数字(%)が使用可

上書きだとループ文が要らないので、コマンドライン一発でも余裕ですね

上書きではなくファイル名を変えて保存する(ファイル名に”_s”を付加)場合はループ文が必要になります

#!/bin/bash
cd /Users/psychic-wave.com/Desktop/process
for file in *.jpg
do
filen=${file%.*}
sips -z 640x960 ${file} --out ${filen}_s.jpg
done

などのように記述すれば良いです

同時に品質をコントロールする場合は

#!/bin/bash
cd /Users/psychic-wave.com/Desktop/process
for file in *.jpg
do
filen=${file%.*}
sips -z 640x960 -s formatoptions 100 ${file} --out ${filen}_s.jpg
done

ですね

さらに処理済みファイルだけを別フォルダに移動することもできます

#!/bin/bash
cd /Users/psychic-wave.com/Desktop/process
for file in *.jpg
do
filen=${file%.*}
sips -z 640x960 -s formatoptions 100 ${file} --out ${filen}_s.jpg
done
mkdir resized
mv *_s.jpg resized

「resized」というフォルダを作成して、リサイズ後のファイルのみ移動します

ここまで来ると夢がひろがりんぐですね!o(*^▽^*)o
最初はタイプミスで苦労する(特に6行目とか)と思いますが、上手く動けばすぐに応用が効くかと思います

縦画像はスクリプトを書き換えれば良いのですが、自動判定して云々するには縦横の辺の長さを取得して分岐文の記述が必要になります
それは次のImageMagick編にて

シェルスクリプトで画像処理(3)ImageMagick編につづく


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)