【日記#63】Macのクイックアクションで画像分割
前置き
あと少しで前置きに書けそうなことがありましたが、今日も間に合いませんでした。力不足ですいません。その他進展はございません…
そして、毎日没集なのも申し訳ないので、没画像を探してる際に気づいたのですが、以前日記で画像分割のことに触れた際に「「Automator」のクイックアクションで実装した方が便利だと思われますが、それはまたの機会に実装したいと思います。」と書いたことを思い出したので、今回サクッと実装して書く事にしました。
本題(Macのクイックアクションで画像分割)
今回以下のQ&Aを参考に実装しましたが、
回答に記載されているシェルスクリプトのコードのfor文はセミコロンが抜けているため参考にする際は注意が必要です。
まず、Pythonファイルを作っておきます。
コードの内容は以下です。
#ライブラリのインポート
import cv2
import numpy as np
import os
import sys
#Automatorからの引数(ファイルパス)取得
input_filepath = sys.argv[1]
filename = os.path.basename(input_filepath)
#画像の読み込み
img=cv2.imread(input_filepath,cv2.IMREAD_COLOR)
h,w=img.shape[:2]
#画像の分割処理
split_x=2
split_y=2
cx=cy=0
for j in range(split_y):
for i in range(split_x):
split_pic=img[cy:cy+int(h/split_y),cx:cx+int(w/split_x),:]
cv2.imwrite(os.path.dirname(input_filepath) + '/' + os.path.splitext(filename)[0] + '_y' + str(j) + '_x' + str(i) + '.png',split_pic)
cx=cx+int(w/split_x)
cx=0
cy=cy+int(h/split_y)
以前の日記で以下の記事を参考にして書いたものを変更しました。
次に、「Automator」でクイックアクションを選択して新規作成します。
次に、以下の画像のように「シェルスクリプトを実行」を追加し「入力の引き渡し方法:」を引数としてに変更します。(その他の設定はお好みでいいです。)
画像のシェルスクリプの内容は以下になりますが、「pyhonのパス」と「.pyファイルのパス」はそれぞれの環境に合わせて置き換えていただければと思います。
for f in "$@"; do
"pythonのパス" ".pyファイルのパス" $f
done
ちなみにpythonのパスの調べ方は以下のQ&Aや記事が参考になります。
.pyファイルのパスの調べ方は以下の記事が参考になります。
そして、クイックアクションを保存すると以下のように表示されると思います。
実行すると以下のようになります。
これで無事実装終わりで、本当にサクサク実装できましたが、
https://www.kabaya.co.jp/catalog/chocolate/1120.html
何回か使ってるうちに、いちいちサブメニューにカーソルが合わせるのがめんどいなと思い調べてみると、クイックアクションではなくサービスなら調整できるようで、
昔は「Automator」からクイックアクションを作成した場合はサービスにも追加されるようで確認してみると、
以下の設定画面で確認できる通り今でも、サービスには登録されているようなのですが、右クリックメニューにはサービスの「デスクトップピクチャを設定」しか表示されておらず、何かしらの不具合かもしれません。
それなら、サービスのサブメニュー化調整の「NSServicesMinimumItemCountForContextSubmenu」のようにコマンドで設定すれば良さそうですが、以下のQ&Aより
と書かれており、今回はフォントについての設定では無いのですがあまり推奨される方法ではなく不具合出ててもおかしくなさそうなのと、
右クリックメニューを編集するアプリの更新が止まっていたり、削除されていたりするので「macOS Sonoma」では右クリックメニューをカスタマイズできないように変更されたのかもしれません。その際に上記の不具合が起きるようになったと考えられる気がします。
サブメニューにカーソル合わせるのが気になっただけだったので、なんか難しい事情があって設定できなそうなので諦めました。(クイックアクセスのクイックとは…)
あとがき
前のようにガツガツ色々なことを試していけるようになるまではまだかかりそうです。申し訳ございません。
そのため、明日以降はまた没集になると思いますが、今回のように簡単に書けそうなものがあれば書きたいと思います。(サブメニューの件があったので思ったより内容が多くなりましたが…)
それでは次の投稿もお楽しみに!!!
#日記 #note #毎日note #毎日更新 #毎日投稿 #note毎日更新
#Python #Automator #クイックアクション