mieki256's diary



2017/04/29() [n年前の日記]

#1 [gimp][python] ドット絵モドキを生成するGIMPのPython-Fuスクリプトで遊んでみたり

_昨日書いたスクリプト で、もうちょっと実験。

0000.png

0001.png

0002.png

こうして見ると、なんだか圧巻…と言っても質より量って感じではあるけれど。

もちろんこれらの画像は CC0 / Public Domain ってことで…と言っても使い道が無いかもしれんけど。

色々テストしてるうちに分かってきたけど、例えば、件のスクリプトでレイヤーを5枚ほど作って構成を以下のようにすると、なんだかちょっとそれっぽくなる、ような気もしてきたり。 もしかすると、上記のようなレイヤー構成を自動で作るようにすれば、もうちょっと使い道が…いや…どうだろう…。このあたりは目視でイイ感じに調整したほうが良さそうだし…。

2017/04/28(金) [n年前の日記]

#1 [gimp][python] GIMP上でドット絵モドキを生成するPython-Fuスクリプトを書いた

GIMP上でドット絵モドキを生成するPython-Fuスクリプトを書いてみたり。以下のような画像が作れます。

tinypixelartgen_ss_02.png


スクリプトソースは以下。

_tinypixelartgen.py

動作には、Python-Fu が動いて pycairo も入ってる GIMP が必要、なんだけど、おそらく GIMP 2.8.x 以降なら、Python-Fu も pycairo も同梱されていて動くんじゃないかな、と…。

ライセンスは、CC0 / Public Domain ってことで。「もっとこうしたらそれっぽくなるんじゃね?」と閃いた方はガンガン弄ってガンガン公開しちゃってください。

インストール方法。 :

_tinypixelartgen.py をダウンロードして、GIMPのユーザフォルダ/plug-ins/ にコピーすればインストールできます。

_[Gimp] Pythonでスクリプトをはじめる - Qiita で紹介されてるように、
編集 → 設定 → フォルダー → プラグイン
を見れば、場所が分かるかも。

使い方。 :

GIMPを起動後、何か画像を(512x512ドットぐらいで)作成しておいて、以下でスクリプトを実行。
フィルター → 下塗り → Tiny Pixleart
(Filter -> Render -> Tiny Pixelart)

実行すると、下のようなダイアログが表示されますが…。

tinypixelartgen_ss_01.png


一応説明しておくと…。
  • Width と Height が、ドット絵モドキ1つ分の横幅と縦幅。
  • Row と Column が、横と縦にいくつ並べるか。
  • Randomize を ON(「する」) にすると、実行するたびにランダムな画像が作られる。(ランダムシード(乱数の種)がランダムになる)
  • Randomize を OFF(「しない」) にすると、その下の Random seed の数値に従って、実行するたびに同じ画像が作られる。
  • X mirror、Y mirror は、横方向、縦方向をミラーリングするか否か。
  • Create で Image を選ぶと、画像を新規作成して、そこにドット絵モドキを作る。
  • Create で Layer を選ぶと、現在開いてる画像にレイヤーを新規作成して、そこにドット絵モドキを作る。
  • Layer name は、新規作成されるレイヤーのレイヤー名。
  • Set grid w x h は、ドット絵モドキのサイズをグリッド間隔にも設定するか否か。設定しておけば、表示 → グリッドの表示、表示 → グリッドにスナップ、で、一つ一つが選択しやすくなる。

応用。 :

動作確認をしている最中に気づいたのだけど、何度か生成してレイヤーを重ねると、見た目がゴージャスになっていくなと…。

例えば、以下は1回だけ生成した状態だけど。

tinypixelartgen_ss_03.png

何度か生成してレイヤーが何枚か重なると、以下のように見た目が結構変わってくる。

tinypixelartgen_ss_04.png

更に、各レイヤーのモードを「オーバーレイ」「乗算」等、色々変えてみると…。

tinypixelartgen_ss_05.png

ということで、ランダムに生成してるからパッと見は「なんだコレ?」って感じだけど、もうちょっと一工夫すると次第にそれっぽくなる、のかもしれないです。

#2 [gimp][python] GIMPで「グリッドの表示」をスクリプトから制御する方法が分からず

GIMP上で動くPython-Fuスクリプトを書いてはみたものの、「グリッドの表示」をするための関数が分からず。

以下の2つは分かったのだけど…。
_gimpgrid

しかし、表示を有効化する関数が見つからない。スクリプト側から利用できる形では用意されてないのだろうか…。

できれば「グリッドにスナップ」まで有効化したいのだけど。表示すら有効にできないのではなあ…。

無いのは当然かもしれない。 :

考えてみれば…。何かしらの自動処理を行う場面を想像すると、グリッドの表示や吸着(スナップ)って、制御できても意味が無いもんな…。

アレはあくまで人間様が、目視で何かの作業をしていく際に「あったら便利」な機能で。スクリプトなどは、例えば等間隔で正確無比に仕事をしていく、なんてのが得意なのだから、グリッドなんて最初から要らんわけで…。

自動処理をした後で、「ここから先はグリッドがあったほうが便利だろう」と思えてくる結果を生成してしまう、そんなスクリプトの仕様そのものが間違っている可能性も。

やっぱり制御できないのはおかしい気もする。 :

「グリッドが必要になる結果を生成すること自体がおかしい」と言われても…。

なら、例えば64枚の画像なりレイヤーなりをガーッと生成したとして。それを一覧表示して人間様が眺められる機能をGIMPが持っているのですかと。否。そんなもの、GIMPは持ってないわけで。

だったら、一枚の画像にずらりと並べて、人間様が目視で選んでいくしかねえべや。そして、ずらりと並べたら、一つ一つを選択する際にグリッドがあったほうが便利やろ、となるわけで。

「グリッドなんぞ制御する意味無し」と断言するためには、大量の画像なりレイヤーなりを一覧で目視して選別を可能にする別の機能が必要なのではないかなあ…。でも、ソレを実装する手間暇を考えたら、スクリプトによるグリッドの制御を可能にして「グリッド使ってどうにかして」と言っちゃうほうがはるかに楽であろう予感。

というか、グリッドの間隔やオフセットを設定したり取得したりする機能があるのに、グリッドの表示や吸着を制御する機能が見当たらないのがやっぱりおかしい気もする。「グリッドまで制御する必要は無い」のであれば、間隔やオフセットを設定する関数は何故存在しているのか。それらがあるなら、表示や吸着もありそうなものではないか。

その2つは、想定外の関数名で隠れているのか、それとも実装を忘れただけなのか…。

別アプリと連携できればいいのに。 :

「そういう作業をしたいなら別アプリとして作るべきだ」と言われそうな気もする。が、その別アプリで作成した結果画像を、どのみちGIMPに持っていって編集するわけで。だったらGIMP上で作ってしまうほうが早いじゃん、てなところも。

GIMPが、別アプリと連携して、レイヤーを渡したり持ってきたりすることができればいいのかもしれない。もし、そういう機能があれば、例えば ImageMagick にレイヤーを渡して処理してもらって、その結果をGIMPのレイヤーに書き戻す、てなこともできて便利になったりするのかも。

とは言え、各CGツールが連携して処理をするための画像フォーマットなんて決まっているのだろうか、という疑問も。

クリップボード? アレってアルファチャンネルを持てたっけ?

ググってみたら、ImageMagick は clipboard: なる指定で、クリップボードから画像を読み込んだりできるみたいで。

_ImageMagickを使おう

なるほど、クリップボードを経由してやり取りする手もアリと言えばアリ、なのかなあ…。

もっとも、各アプリがクリップボード経由でデータを渡そうとしてるタイミングで Ctrl + C を押したらどうなるんだろう、という疑問も。

MIDIなんかもそうだったけど、連携できるか否かって、何かしらを作っていくときには結構効いてくる、ような気がする…。

2017/04/27(木) [n年前の日記]

#1 [python] Python + cairo(pycairo) でドット絵モドキを生成

_先日書いたドット絵モドキを生成するRubyスクリプト をPythonで書き直すことができた、と思う。たぶん。

tinypixelartgrad_gui_screenshot.gif

ソースは以下。ソース自体は CC0 / Public Domain ってことで。

_tinypixelartgrad.py / tinypixelartgrad_gui.py

tinypixelartgrad.py と tinypixelartgrad_gui.py をDLして、以下で実行。
python tinypixelartgrad_gui.py

動作には以下が必要。 Winodws10 x64 と Windows7 x64上で動作確認済み。

exe版も作ってみたり。 :

一応、動作確認ぐらいはできるように、Windows上で動作するexe版も置いときます。

_tinypixelartgrad_gui.zip (7.8MB, 解凍すると14MB程度)

解凍して、中に入ってる tinypixelartgrad_gui.exe を実行すれば動くんじゃないかなと。たぶん。動いたらいいな。

exe化は、 _PyInstaller を使用。 *1

実行バイナリは 32bit版になってるはずだけど…。 *2 自分の手元には Windows7/10の64bit版しか無いので、32bit版のOS上で本当に動くかどうかは不明。

しかしコレ、同梱されてるDLLがライセンス的にアレだから、ちゃんとした形での配布は難しい予感。なので、これから GIMP の Python-Fu で書き直してみようかと考えていたり。

動作に必要なアレコレのインストール方法について一応メモ。 :

どうやってインストールしていたのか、そのうち自分も忘れそうなので、一応メモ。

環境は Windows10 x64。

Python本体は、 _Download Python | Python.org から辿っていけば、セットアップファイルを入手できる。今現在は、 _Python Release Python 2.7.13 | Python.org で、Windows x86版(32bit版) や Windows x86-64版(64bit版) が入手できる模様。

_WindowsにPythonをインストールする方法 | UX MILK によると、インストール時に「tcl/tk and IDLE」にチェックを入れれば、Tkinter もインストールされる模様。まあ、「tk」とか「tkinter」という単語が見えたら一緒にインストールしておく、ということでいいのかなと。

pycairoは、 _PyGTK 経由で、 _ftp.gnome.org より pygtk-all-in-one-2.24.2.win32-py2.7.msi をDLしてインストールすれば、PyGTK、PyCairo、PyGObject の3つがインストールできる。のだけど、コレ、導入は楽だけど、バージョンが古くて…。

一応、 _Download GTK+ 経由の _GTK+ Download: Windows というページで、「MSYS2を入れれば最新版のインストールは簡単」みたいなことが書いてあるけど…。手元の環境では MSYS2 だけでも2GB近くHDDに入っていて…。まあ、それぞれ好きな版を使えばいいのでは、みたいな。古い版でも一応こうして動いてるようだし。

Pillowは、Python がインストールされてるなら、pip install Pillow でインストールできる。今、手元で試したら、Pillow 4.1.0 がインストールされた。

*1: 最初は py2exe でexe化を試みたけど、生成されたexeを実行したら強制終了するので諦めました。
*2: 手元でインストールしてあるのは Pythn 2.7 32bit版なので、exe化して出来上がったバイナリも32bit版のはず。

以上、3 日分です。

過去ログ表示

Prev - 2017/04 -
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project