2016/03/29

[Python]Pillowの「Unsupported BMP bitfields layout」への対処/艦これSS取得スクリプトver2.0

結論:Pillowのバージョンを2.7.0まで落とせ。


以前、艦これのSSを取るスクリプトを書いた。
先日いつものようにこのスクリプトでSSを取ろうとしたところ、何かエラーが出た。

全くもって馬鹿馬鹿しいことに、このエラーがどのようなエラーだったのかは忘れたのだが、
思い当たる節は数日前にPythonのバージョンアップを行ったことくらいしかなかったので、それによってPILモジュールがうまく動かなくなっているのではないかと疑った。

ということでPILをインストールしなおそうと思ったのだが、どうもPILは開発が終了しているらしく、Pillowというのが後継らしい。
ならばいい機会ということでPillowに変えようということで、

pip uninstall PIL
pip install pillow

でPillowをゲット。
その上でスクリプトを動かしたところ、出てきたエラーが記事タイトルの通り「Unsupported BMP bitfields layout」であった。

PillowとPILでは何か違うのか?ということでPillowのドキュメントを漁ったところ、プリントスクリーンで撮ったSSを取得する関数があることが発覚。(PillowはPILを引き継いでいるので同じ関数を使える?)
PIL.ImageGrab.grabclipboard()というやつだ。
以前はWindowsからクリップボードを引っ張ってきて、それを変換して、画像にして、切り出し~などと面倒なことをやっていたが、この関数一発でやれる。
というわけで、以下のようなスクリプトを書いた。

# coding:utf-8
# Project_SS
from PIL import ImageGrab

imgFile = ImageGrab.grab((560, 188, 1360, 667))
imgFile.save('[保存パス(~~.png)]','PNG')

これでいけるやん!ということで動かしたがまた同様に「Unsupported BMP bitfields layout」エラー。
なんでだ、わからん。詰んだ。

詰んだら検索。「Pillow Unsupported BMP bitfields layout」などと検索するといくつか英語のコミュニティの書き込みが見つかった。
読み込んでみると、ver2.8以降でこのエラーが出ることがわかっている(既知のバグで放置中?)らしい。
ほーん、試してみよ。

pip uninstall pillow
pip install pillow==2.7.0

これで上記のスクリプトを動かしたところ、無事動きました。
最初のエラーが何だったのかはちょっと気になりますが、まあ動くようになったので良しとしましょう。

2016/03/28

“はじまり”のないブログ

独自ドメインを新たに取得し、http://blog.retore.xyz/としてブログをリニューアルしてみた。

直接的なきっかけはドメインの取得だが、そもそも前から「retore.me」というドメインを持っていた。
これはAndroidのアプリを作った際パッケージ名に使うために取得したものだったが、そちらは三日坊主で終わったので、javasciprtで書いたちょっとしたアプリを公開するサイトで使っていた。

ところが、この「.me」ドメインの更新料が意外と高いことに今さら気づき、更新料が安いドメインを新規に取得することにしたのがこのドメインである。
まあ、「.yokohama」とかのほうが安かったような気もするが、横浜に住んでる今はまあいいとして、今後いつまで横浜にいるかは全くわからないのでやめておいた。
「.xyz」というドメインもなかなか得体のしれないものだが、確かGoogleの親会社のHPのドメインにも使われていた記憶があったので、これにしてみた。

そうして新たにドメインを作り、前述のサイトのURLもhttp://apps.retore.xyz/に変えた。
これだけで別に何の問題もなかったのだが、前々からWordpressによるブログ運営対する不満がじわりじわりと溜まっていたので、これを機にブログをリニューアルし、ついでに取得したドメインを使うことにした。
そしてできたのがこのブログである。

このブログは、前「ものぐさブルーライト」(WordPress)から一部記事を引き継いでいる、というか引き継ぎ作業継続中である。
また、前々ブログ「めいぷるプラザ」(FC2)からも記事を引き継ごうかと考えている。
そういう意味では、このブログに明確な「はじまり」はない。

「前」とか「前々」という表現を自分でしておいてなんだが、このブログへの移転はあくまでリニューアル公開で、これまでの一連の流れの延長線上にあるものと捉えている。
この記事が一応このブログオリジナル記事としては最古ということになるが、あくまでお知らせ的な意味合いしか持たせたつもりはない。

そういうわけで今後はこのブログをいじっていきたいと思っているが、独自ドメインを取得し使って何が嬉しいかというと、今後違うサービスを使ったりしても同じURLで公開できるということだ。
そうすれば今後このような細々したお知らせをする必要もなくなるのだ。

早速書きたいPythonネタが2つほどあるが、とりあえず記事の引き継ぎ作業をジワリジワリと進めていきたいと思う。
画像がある記事の移転は割と面倒なのでなかなか進まない。
画像といえば、Bloggerの画像周りが、GoogleのフォトサービスがPicasaからGoogleフォトに変わるにあたりどうなるのかということが未だよくわかっていない。
この辺りももう少しつついてみたいところだ。