11

AppleのAutomatorを実行して、大量の画像をそのサイズで単純にカットすると、Automatorはファイル(jpg)の品質も低下させ、ぼやけてしまいます。

どうすればこれを防ぐことができますか?制御できる設定はありますか?

編集:

または、同じ仕事をするが画質に影響を与えない他のツールはありますか?

4

5 に答える 5

12

JPEG 圧縮の量を細かく制御したい場合は、kopischke が言ったようsipsに、シェル スクリプトで使用できるユーティリティを使用する必要があります。Automator でこれを行う方法は次のとおりです。

最初にファイルと圧縮設定を取得します。

ファイルと圧縮設定を Automator のシェル スクリプトに渡す

テキストを要求」アクションは、入力を受け付けないようにする必要があります (右クリックして、「入力を無視」を選択します)。

最初の [変数の値を取得] アクションが入力を受け付けないこと (右クリックして [入力を無視] を選択) を確認し、2 番目の [変数の値を取得] アクションが最初の入力から取得することを確認します。これにより、シェル スクリプトに渡される配列が作成されます。配列の最初の項目は、Automator スクリプトに与えられた圧縮レベルです。sips2 番目は、スクリプトがコマンドを実行するファイルのリストです。

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\"}"

下部にある [結果] をクリックすると、現在作業中のファイルが表示されます。楽しく圧縮しましょう!

于 2012-10-24T19:29:20.357 に答える
6

Automator の「Crop Images」と「Scale Images」アクションには品質設定がありません。ただし、 Cocoa プログラミングに頼らずにCoreImageの画像操作機能にアクセスする別の方法があります。 Scriptable Image Processing Systemは、画像処理機能を利用できるようにします。

  1. ユーティリティ経由sipsシェル。これを使用して最も細かい設定をいじることができますが、処理が少し難解なので、2 番目の方法を使用する方がよい場合があります。
  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 には、scalecropの両方の使用法に関する優れたチュートリアルがあります。

于 2012-05-22T14:16:56.657 に答える
2

エリックのコードは素晴らしいです。ほとんどの仕事をこなすことができます。ただし、画像のファイル名にスペースが含まれている場合、このワークフローは機能しません (スペースがあると、一口を処理するときにシェル スクリプトが壊れます)。これには簡単な解決策があります。このワークフローに「 Rename Finder Item 」を追加します。スペースを「_」または好きなものに置き換えます。それなら、行ってもいいです。

于 2013-12-24T00:23:43.600 に答える