オートメーターの写真のイメージを切り取るで、解像度を変更したくない
オートメーターの写真のイメージを切り取るを使って、jpgファイルの不要部分を切り取る作業をしていますが、その際、勝手に画像の解像度も低解像度に変更されてしまいます。
解像度を変更せずに、サイズだけ変更したいのですが、どうしたらよいでしょうか。
iMac Line (2012 and Later)
オートメーターの写真のイメージを切り取るを使って、jpgファイルの不要部分を切り取る作業をしていますが、その際、勝手に画像の解像度も低解像度に変更されてしまいます。
解像度を変更せずに、サイズだけ変更したいのですが、どうしたらよいでしょうか。
iMac Line (2012 and Later)
>ちなみに、その仕様はどちらでお調べ頂きましたでしょうか?
実際に試してみました。
144DPIのデスクトップスクリーンショット(PNGファイル)に対して、貴殿がお書きのワークフローを作成・実行すると、
72DPIのJPEGファイルが作成されました。
>単純に、不要部分を切り取りたいだけなので、
手作業で良ければ「プレビュー」アプリを使えば簡単にできますが...
切り取りたい領域を選択した状態で「⌘ + K」で一発OKです。
>ちなみに、その仕様はどちらでお調べ頂きましたでしょうか?
実際に試してみました。
144DPIのデスクトップスクリーンショット(PNGファイル)に対して、貴殿がお書きのワークフローを作成・実行すると、
72DPIのJPEGファイルが作成されました。
>単純に、不要部分を切り取りたいだけなので、
手作業で良ければ「プレビュー」アプリを使えば簡単にできますが...
切り取りたい領域を選択した状態で「⌘ + K」で一発OKです。
何度もすみません...。「イメージを切り取る」アクションを使わないワークフローを拵えてみました。このワークフローでは AppleScript で画像のサイズを指定し、シェルスクリプトで切り取り処理をします。
ワークフロー
AppleScript を実行
on run {argv}
display dialog "Width" default answer "256" with icon 1
set w to result's text returned
display dialog "Height" default answer "256" with icon 1
set h to result's text returned
repeat with i in {w, h}
if i as integer < 1 then error
end repeat
return {w, h} & argv
end run
シェルスクリプトを実行
[[ $# > 2 ]] || exit 1
w="$1"
h="$2"
shift 2
for f in "$@"; do
sips -c "${h}" "${w}" "${f}" >/dev/null 2>&1
done
ーーーーー
上記 AppleScript では画像のサイズを指定する際に二回ダイアログを表示しますが、display text fields script Library v1.1 をインストールするとダイアログの表示は一回で済みます。さらに使い勝手の良いスクリプトになると思うので、時間があるときにでも試してみてください。
sips コマンドに渡す画像サイズを指定する際、既存のアクションでは何かと面倒なので、AppleScript を使うなどして「一工夫」すると、比較的シンプルにワークフローを作成できると思います。
補足1: シェルスクリプトはかなり手抜きです。ちゃんとやるとなるとそれなりにコード量が増えるので必要最小限にしました。足りない部分は書き足してください。
補足2: sips コマンドは解像度やファイルの形式を変更せずに画像を切り取ることが可能です。ただ、Automator でやるとなると画像サイズの指定方法で一工夫必要となります。
とっち176 さん、こんにちは。
Apple サポートコミュニティにご投稿いただきありがとうございます。
Automator を使用し、画像のイメージを切り取った場合、画像の解像度が変更されるということでよろしいですか。
経験豊富なユーザの皆様から有用な情報が得られるようお手伝いいたします。
次のような詳細内容を含めて状況をご説明いただくと、ほかのユーザの皆様が答えやすくなります。
・Mac のモデル (Mac のモデルとシリアル番号を調べる)
・ソフトウェアのバージョン (Mac に搭載されている macOS を調べる)
・ どのような手順で Automator のワークフローを作成しましたか。
・最近になってこちらの問題が発生しましたか。現象発生のきっかけをわかる範囲で結構ですので、ご記載ください。
・再起動など、すでにお試しの手順などありましたらご記載ください。
・また、更新のタイミングで解約をお急ぎの場合、こちらから、電話やチャットで問い合わせができます。
上記についてご確認くださいますよう、お願いいたします。
返信頂き、ありがとうございます。
>モデルとバージョン
>どのような手順で Automator のワークフローを作成しましたか。
以下の流れで作成しています。
1.「指定されたFinder項目を取得」で、ファイルを指定。
2.「Finder項目をコピー」で、保存先に別フォルダを指定。(既存のファイルを置き換えるチェックボックスの指定有無に関係なく発生します)
3.「イメージを切り取る」で、サイズ指定で幅・高さを指定。切り取る前のサイズ調整は調整しないを指定。
>最近になってこちらの問題が発生しましたか。
特に何かをしたから発生するようになった訳ではなく、最初から発生しています。
>再起動など、すでにお試しの手順などありましたらご記載ください。
再起動しても事象は変わりません。
ログを見ると、以下のようになっています。
この「ファイル/フォルダからイメージの変換が完了しました」が何をしているのか分かりませんが、このような指示はしていませんし、
これが怪しいと見ています。これを勝手に実施しないようにしたいです。
* 個人情報を削除いたしました。Apple Inc.
シェルスクリプトを若干変更しました。
72dpi に変更: 引数が何もない場合はエラー終了する処理を追加
[[ $# > 0 ]] || { echo "no argument" >&2; exit 1; }
for f in "$@"; do
dpi_width=$(mdls -raw -nullMarker '' -name kMDItemResolutionWidthDPI "$f")
if [[ "${dpi_width}" != 72 ]]; then
sips -s dpiWidth 72 -s dpiHeight 72 "$f" >/dev/null 2>&1
fi
echo "$f"
done
144dpi に変更: 「イメージを切り取る」アクションは PNG ファイルを JPEG ファイルに変換してしまうようなので、拡張子を「jpg」に変更する処理を追加
for f in "$@"; do
dpi_width=$(mdls -raw -nullMarker '' -name kMDItemResolutionWidthDPI "$f")
if [[ "${dpi_width}" != 144 ]]; then
sips -s dpiWidth 144 -s dpiHeight 144 "$f" >/dev/null 2>&1
fi
new_f="${f%*.*}.jpg"
if [[ ! -e "${new_f}" ]]; then
mv "${f}" "${new_f}"
else
echo "${new_f}: already exists" >&2
exit 1
fi
done
ご丁寧に付記頂き、ありがとうございます。
sipsコマンドについては、まだちゃんと理解出来ていません。これから勉強します。
仰っていることに対する回答になっているかどうか分かりませんが、イメージを切り取るで指定するサイズは倍に変更しました。
これで上手く行きましたので、一旦ご報告させて頂きました。
>「イメージを切り取る」アクションは PNG ファイルを JPEG ファイルに変換してしまうようなので
こちらについてですが、現状この様な状態にはなりませんでした。(PNG→PNG)
以前、いろいろ試した中で、拡張子がjpg→pngになったことがあったような気がしますが、ハッキリ覚えていません^^;
一応、現状は上手くいっています。
jpgはサイズを抑えられますが、不可逆なので上手くいかないかも思い、png→pngにしています。
これで、解像度が低下して見づらくなる問題は解消していますので、満足しております。
また何か問題が発生しましたら、こちらのご意見を再度拝見し、検討したいと思います。
ありがとうございました。
解像度の変更は sips コマンドできるようなので、一旦72dpiに変更してから「イメージを切り取る」処理をして、144dpiに変更してみるとか。
72dpi に変更
for f in "$@"; do
dpi_width=$(mdls -raw -nullMarker '' -name kMDItemResolutionWidthDPI "$f")
if [[ "${dpi_width}" != 72 ]]; then
sips -s dpiWidth 72 -s dpiHeight 72 "$f" >/dev/null 2>&1
fi
echo "$f"
done
144dpi に変更
for f in "$@"; do
dpi_width=$(mdls -raw -nullMarker '' -name kMDItemResolutionWidthDPI "$f")
if [[ "${dpi_width}" != 144 ]]; then
sips -s dpiWidth 144 -s dpiHeight 144 "$f" >/dev/null 2>&1
fi
echo "$f"
done
返信を投稿したのですが、アップされませんでした。。再度、返信しますので少しお待ち下さい。。
ああ。なるほど。お手数をお掛けしてしまい申し訳ありません。
ですよね。。
はい。手作業なら色々手段はあるかと思いますが、何十回、何百回となると、自動化したいです。。
オートメーターは諦め、他の手段を模索したいと思います。
ご丁寧に回答頂き、ありがとうございました。m(_ _)m
返信頂きありがとうございます。
おぉ、ここでシェルスクリプトが使えるとは!
shは仕事柄よく使いますが、画像処理コマンドは知りませんでした。。
勉強させて頂きます。
また、是非とも試させて頂きます。m(_ _)m
pngファイルでやりたいことが実現出来ました。
大変助かりました。
今回の件で、自分は画像について何も分かっていないことを理解しました。
少しずつ学んでいきたいと思います。
ご教示ありがとうございました。m(_ _)m
スクリプトありがとうございます。
時間のあるときに検討してみたいと思います。
ご丁寧にご教示頂き、本当にありがとうございました。m(_ _)m
返信頂きありがとうございます。
うぐぐ。ひどい仕様ですね。。使い物にならない。。何を前提にした仕様なんだろう。。
ちなみに、その仕様はどちらでお調べ頂きましたでしょうか?
後学のため、ご教示頂けると幸いです。
単純に、不要部分を切り取りたいだけなので、その為にフォトショを購入するのも。。
あまりお金をかけずに、かつ大量の画像を一括で処理したいのですが、
AppleScriptでやるのは、自分には荷が重そうでした。。
とっち176 さんによる書き込み:
>「イメージを切り取る」アクションは PNG ファイルを JPEG ファイルに変換してしまうようなので
こちらについてですが、現状この様な状態にはなりませんでした。(PNG→PNG)
ええと、「イメージを切り取る」アクションで PNG ファイルを処理すると、拡張子は png のままフォーマットが JPEG になるはずです。処理後のファイルについては拡張子を見るのではなく、Preview.app で開き「情報を見る」で確認してください。
ーーーーー
例
処理前のファイル: とっち176 さんが投稿されたスクリーンショット
Automator ワークフロー
処理後のファイル: 拡張子が png な JPEG ファイル...
ーーーーー
要するに「イメージを切り取る」アクションの挙動は、
・画像ファイルのフォーマットを強制的に JPEG に変換する
・拡張子名は変更しない
# このアクションは出来が悪すぎますね...。
ーーーーー
当方の環境: macOS Mojave 10.14.6 (18G6042)
オートメーターの写真のイメージを切り取るで、解像度を変更したくない