2013年3月20日水曜日

Python pygame.image.load()

 日記としてつけ始めたこのブログですが、Webに貢献できるようにProgramming Tipsも載せていこうと思います。そのほうがページランクも上がるでしょうから。

Python+Pygameで画像を読み込む方法です。代表的なのがウェブに乗っています。例えば次のようなもの。

import pygame

image = pygame.image.load('picture.bmp').convert()

このコードでimageプロパティに画像が代入されます。convert()することによってSurfaceに貼り付けるときに機械の処理が楽になるそうです。

pygame.init()
screen = pygame.display.set_mode((200,100))
screen.blit(image,(0,0))

ウィンドウを作って先ほどの変数に格納した画像を書き込んでいます。pygame.init()をまず最初に呼び出して初期化してからscreenを作るみたいですね。

さて、今回一番重要なイメージの読み込みですが、実はネットに書かれている上記の方法ではWindowsでは動作してもLinuxではファイルをみつけることができません。ですので以下のように書き換えておくのが良いと思います。記入例では.pyファイルと同階層にあるdataディレクトリに画像を格納してある設定です。
 import sys,os

image = pygame.image.load(os.path.join(path(),'data','picture.bmp').convert()

def path():
    for name in sys.argv:
        if os.path.exists(name) == True:
            return os.path.dirname(name)
    return ''

一行で書くべき文は改行を入れないでください。Pythonの基本です。path()というのは自作関数です。このようにすれば実行時引数から絶対パスを取得します。カレントディレクトリがどこであっても絶対パスを返すらしく、今のところ問題は出ていません。あしからず。
ところで、関数の使い方については検索してウェブで調べてご覧になってください。

0 件のコメント:

コメントを投稿