2015/12/06

艦これのSSを撮影するPythonスクリプト書いた。

タイトルの通り。
いままでTwitter等でSSを公開するとき、プリントスクリーンでスクリーンショットを撮り、それをペイントに貼り付けてトリミングしていた。
だがいちいちそれをやるのは面倒くさい、ということでpythonで一発でやれるようにしようや、というのが動機になる。

以下コード。

# coding:utf-8
# Project_SS

from  StringIO  import  StringIO
import win32clipboard as cb
from PIL.BmpImagePlugin  import  DibImageFile
import sys

cb.OpenClipboard()
if not cb.IsClipboardFormatAvailable(cb.CF_DIB):
    print u'クリップボードに画像がありません。'
    sys.exit()
imgData = cb.GetClipboardData(cb.CF_DIB)
imgFile = StringIO(imgData)
img = DibImageFile(imgFile)
box= (560, 187, 1360, 667) #ブラウザの画面中艦これ部分の座標の指定。解像度によるのかな?
output_img = img.crop(box)
output_img.save('[保存する画像のパス。任意で指定。]','JPEG')

まずはこちらを参考にさせていただき、クリップボードの画像を取得するコードを書いてみた。ところが「from BmpImagePlugin import DibImageFile」の部分でエラーが出る。Pythonで何か書こうとするとimportでまず躓くのは仕様か。

というわけでGoogle先生を使って探索するとこちらを発見。どうやら「PIL.」をつければいいらしい。

更にプリントスクリーンによるスクリーンショット(つまり画面全体)から艦これ部分をトリミングすべく、検索。そしてここにたどり着いたので、組み合わせてみる。
艦これ部分の座標取得のためにMPP Utilityを使った。これはコード内にコメントで書いたように、解像度によって違うのかもしれない。もし上のコードでうまくいかなければ、MPP Utilityで艦これ部分の左上(x1,y1)、右下の座標(x2,y2)を取得し、box=(x1,y1, x2,y2)と指定すればOKだ。

今後の発展方向としては、取得した艦これ部分の画像をmatplotlibか何かで表示して、更に一部分だけをトリミングできるようにする、とかできたらいいなあ、と思っている。
ただし、思っているだけでやるとは言っていない。使ってみてそういう機能が欲しいと思えばやるし、思わなければやらない。予想だが、多分やらないんだろう。

0 件のコメント:

コメントを投稿