AppleのAutomatorを実行して、大量の画像をそのサイズで単純にカットすると、Automatorはファイル(jpg)の品質も低下させ、ぼやけてしまいます。
どうすればこれを防ぐことができますか?制御できる設定はありますか?
編集:
または、同じ仕事をするが画質に影響を与えない他のツールはありますか?
AppleのAutomatorを実行して、大量の画像をそのサイズで単純にカットすると、Automatorはファイル(jpg)の品質も低下させ、ぼやけてしまいます。
どうすればこれを防ぐことができますか?制御できる設定はありますか?
編集:
または、同じ仕事をするが画質に影響を与えない他のツールはありますか?
JPEG 圧縮の量を細かく制御したい場合は、kopischke が言ったようsips
に、シェル スクリプトで使用できるユーティリティを使用する必要があります。Automator でこれを行う方法は次のとおりです。
最初にファイルと圧縮設定を取得します。
「テキストを要求」アクションは、入力を受け付けないようにする必要があります (右クリックして、「入力を無視」を選択します)。
最初の [変数の値を取得] アクションが入力を受け付けないこと (右クリックして [入力を無視] を選択) を確認し、2 番目の [変数の値を取得] アクションが最初の入力から取得することを確認します。これにより、シェル スクリプトに渡される配列が作成されます。配列の最初の項目は、Automator スクリプトに与えられた圧縮レベルです。sips
2 番目は、スクリプトがコマンドを実行するファイルのリストです。
Run Shell Scriptアクションの上部にあるオプションで、シェルとして「/bin/bash」を選択し、Pass Input で「as arguments」を選択します。次に、次のコードを貼り付けます。
itemNumber=0
compressionLevel=0
for file in "$@"
do
if [ "$itemNumber" = "0" ]; then
compressionLevel=$file
else
echo "Processing $file"
filename="$file"
sips -s format jpeg -s formatOptions $compressionLevel "$file" --out "${filename%.*}.jpg"
fi
((itemNumber=itemNumber+1))
done
((itemNumber=itemNumber-1))
osascript -e "tell app \"Automator\" to display dialog \"${itemNumber} Files Converted\" buttons {\"OK\"}"
下部にある [結果] をクリックすると、現在作業中のファイルが表示されます。楽しく圧縮しましょう!
Automator の「Crop Images」と「Scale Images」アクションには品質設定がありません。ただし、 Cocoa プログラミングに頼らずにCoreImageの画像操作機能にアクセスする別の方法があります。 Scriptable Image Processing Systemは、画像処理機能を利用できるようにします。
sips
シェル。これを使用して最も細かい設定をいじることができますが、処理が少し難解なので、2 番目の方法を使用する方がよい場合があります。Image Events経由のAppleScriptcrop
は、OS X によって提供されるスクリプト可能な顔のないバックグラウンド アプリケーションです。scale
save <image> as JPEG with compression level (low|medium|high)
「Crop」/「Scale」アクションの代わりに「Run AppleScript」アクションを使用し、Image Events コマンドをtell application "Image Events"
ブロックでラップすると、設定する必要があります。たとえば、画像を半分のサイズにスケーリングし、最高品質の JPEG として保存して、元の画像を上書きするには、次のようにします。
on run {input, parameters}
set output to {}
repeat with aPath in input
tell application "Image Events"
set aPicture to open aPath
try
scale aPicture by factor 0.5
set end of output to save aPicture as JPEG with compression level low
on error errorMessage
log errorMessage
end try
close aPicture
end tell
end repeat
return output -- next action processes edited files.
end run
– 他のスケールの場合は、それに応じて係数を調整します (1 = 100 %、.5 = 50 %、.25 = 25 % など)。切り抜きの場合は、 を に置き換えscale aPicture by factor X
ますcrop aPicture to {width, height}
。Mac OS X Automation には、scaleとcropの両方の使用法に関する優れたチュートリアルがあります。
エリックのコードは素晴らしいです。ほとんどの仕事をこなすことができます。ただし、画像のファイル名にスペースが含まれている場合、このワークフローは機能しません (スペースがあると、一口を処理するときにシェル スクリプトが壊れます)。これには簡単な解決策があります。このワークフローに「 Rename Finder Item 」を追加します。スペースを「_」または好きなものに置き換えます。それなら、行ってもいいです。