スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Python-FuによるGIMPプログラミング Part2

どうも、砂塵です。
日本一簡単なPython-Fuを目指す本企画!第2回目はファイルを読み込むのではなく、
一から画像を作ってみようというものです。

今回はGIMPの基礎画像の作成とレイヤーについて、ボリューム満点でお送り致します。

今回の前回同様、
コンソールから操作していきます。

そのため、ソースコードは別途テキストエディタに記述したものをコピーして貼りつけて下さい。
まず以下のソースを実行してみて下さい。


from gimpfu import *

width = 640
height = 480

#Create Image(width is 640px,height is 480px.type is RGB)
img = gimp.Image(width, height, RGB)
disp = pdb.gimp_display_new(img)


以上のソースを実行すると名称未設定で描き込み不可能の新規画像が作成されます。
画像のカラーモード(画像→モードから確認可能)はRGBです。
グレースケールの場合gimp.Image()の3番目の引数にGRAYを指定します。


画像処理小話:グレースケールモードによる色の扱いについて

カラーモードがグレースケールの場合、赤や青などの色で描こうとしても輝度に基づいた濃淡に変換されて描画されます。

一般にグレースケール化は以下の式に表されるNTSC 係数による加重平均法 によって行われます。

Y = ( 0.298912 * R + 0.586611 * G + 0.114478 * B )

ようは緑 > 赤 > 青の順に明るく表示されるように重み付けが行われているわけです。



このままでは何もできないのでこれに対してレイヤーを追加してやる必要があります。
普段、GIMPで行っている新規作成ではこれにレイヤーが一枚追加されている状態で作成されている訳です。



画像処理小話:レイヤーって何さ

 コスプレイヤーのことです。嘘です。
 レイヤー(layer)は層や積み重ねるという意味の単語で、画像処理ソフトでの実装の一つです。レイヤー1つに対して自由に描画することが可能な背景が透明の領域で、一般的に不透明度が指定可能です。
 不透明度とはレイヤーの0~100で表されるレイヤーに描画されたものの不透明さをを表す値で、
太いメイドさんのことではありません。
不透明度が0なら透明なので視覚的にはレイヤーは完全に消えます。
 レイヤー自体が透明なので何も描画しなければ何も変化はありませんが、描画されたものを透かすことができるので様々な視覚効果を狙うことが可能となります。
 実装としてはWindowsで言えば、複数の画面へのデバイスコンテキストをスタックなどで管理することで実現可能です。画像処理ソフト以外にも階層的に画像の描画領域を管理出来るという利点から、様々なゲームの実装などにも利用されています。



レイヤーを追加した新規画像の作成のコードは以下のようになります。


from gimpfu import *

width = 640
height = 480

#Create new image(width is 640px,height is 480px.type is RGB)
img = gimp.Image(width, height, RGB)

#Carete new layer(layer name is "New Layer" , opacity is 100)
layer = gimp.Layer(img, "New Layer", width, height, RGB_IMAGE,100, NORMAL_MODE)
img.add_layer(layer, 0)
pdb.gimp_edit_fill(layer, BACKGROUND_FILL)

disp = pdb.gimp_display_new(img)


このコードの肝はCreate new layerというコメント以降です。
gimp.Layer()の引数は
(画像,レイヤー名,幅,高さ,表色系,不透明度,モード)となっており、不透明度とモードは省略が可能です。
省略時の値がそれぞれ100,NORMA_MODEなので上記のコードでは問題ありません。

これでレイヤーが作成されたので、次の行で作成されたレイヤーを画像に追加しています。
それがimg.add_layer()です。引数は(追加するレイヤー,追加位置)となります。
追加位置は複数レイヤーがある場合に意味を持ってきます。

この状態で画面に出力すると黒い背景の背景レイヤーが作成されます。

別にこのままで良い場合は問題ありませんが、次の行で背景色(白)で塗りつぶしてから画面に描画しています。

ちょっと長くなってしまったので今回はここまで。

ここまででレイヤーの基礎が分かったはずなので次回は複数のレイヤーを管理剃る方法などについて
触れていきたいと思います。

それではまた次回。
スポンサーサイト

コメントの投稿

非公開コメント

twitter
    follow me on Twitter
    プロフィール

    砂塵

    Author:砂塵
    GIMP2でお絵描きしています。
    主にイラスト練習、プログラミングなどを扱っているブログです。

    Skype始めました。
    SkypeID:sazinn-gimp
    出没時間:平日21~26時、休日(土・日)

    Pixivはじめました
    微エロな絵を載せることがありますので、そういうのが苦手な方や嫌悪感を覚える方はご注意ください。

    カテゴリ
    リンク
    最新記事
    月別アーカイブ
    最新コメント
    RSSリンクの表示
    FC2カウンター
    FC2ブログランキング

    FC2Blog Ranking

    参加ブログカテゴリ
    にほんブログ村 IT技術ブログ プログラム・プログラマーへ
    にほんブログ村 イラストブログ イラスト練習へ
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。