ほるっふー

自宅のベランダに鳩が住み着いた話を5万人の前ですること。

スクリーンショットの周囲を切り落としたい

サーバー上でXウィンドウを飛ばしてプロットを作った時
転送するのが面倒なのでMacの画面をそのまま ⌘+Shift+4 でスクリーンショットを撮って済ませたくなる。

しかし、これをスライドに載せようと思った時には見栄えが悪いし作り直すのも、手動でトリミングするのも面倒だ。

f:id:blacksmithltw:20170810152608p:plain

 

元々のアイディアはこちらから

askubuntu.com

自分の環境で動かなくてpython3 のせいだとおもっていたが ImageMagick のidentifyコマンドを持っていなかったことに気がついた頃にはオリジナルのshellを書いていた。

convertコマンドを使って上下から決められた幅を切り落とす。
canvasのサイズがいくらであっても上下の幅は変わらないからね。

crop_screenshoot

#!/bin/bash

#crop screen shoot

 

#crop dimensions

top=56

bottom=29

right=22

left=22

 

#loop

for image in "$@"

do

    if file -b "$image" | grep "PNG image data"; then

        size=($(file -b "$image" | tr -cd '0123456789 \n'))

        w=$(expr ${size[0]} - $left - $right)

        h=$(expr ${size[1]} - $top - $bottom)

        x=$left

        y=$top

        convert "$image" -crop $w"x"$h"+"$x"+"$y +repage "$image"

    fi

done

を保存し実行権限を与えて

[iMac] smith: Desktop $ ./crop_screenshoot hoge.png

でくり抜ける。ワイルドカードも使える。

f:id:blacksmithltw:20170810152611p:plain

 

一度くり抜いたものは飛ばしたり、スクリーンショットを撮る時に最前面にいたかどうかで影のサイズが変わってしまうのでそのあたりもうまいことできたらいいなと思っている…