[PR]テレビ番組表
今夜の番組チェック


Python Imaging Library(PIL)

 Python Imaging Library(PIL) は、Python/Tkinterの拡張モジュールで、 Tkinterに強力な画像処理機能とJPEG、PNGなど多くの画像フォーマットのサポートを追加します。 PILをPython処理系に組み込むだけで、 JPEG、PNGなどのフォーマットの画像ファイルを扱うことが可能になります。
 PILは上のリンクから無償でダウンロードできます。 現在の最新版は1.1.3となっています。本サイトでは、次の環境で動作を確認しています。

OSPythonPIL
Windows XP Home Edition2.21.1.2

Windows環境でのインストール
 Windows向けには、自己解凍形式のインストーラ付きで配布されています。 上記サイトからダウンロードし、エクスプローラなどから起動するとインストーラが起動します。 一次インストール位置は選べないようです(上のバージョンでは C:\py22)。 インストーラが終了したら、次のようにファイルをコピーします。 ここで、Python処理系のインストール位置を C:\Wintools\Python22 とします。

(※1) 付属の文書では、PIL\*.*をsite-packagesの中に直接コピーするようにと書かれていますが、 ファイル数がかなり多いためsite-packagesの中がごちゃごちゃしそうなので、 ここではこのようにしています。

簡単な画像ビューア
 さて、せっかくPILをインストールしてJPEGやPNGなどの画像フォーマットが読めるようになったので、 これらの形式の画像ファイルを表示する簡単な画像ビューアを作ってみました。

from Tkinter import *
import PIL.Image, PIL.ImageTk
import tkFileDialog

class App(Frame):
  def quit(self, event): self.master.destroy()

  def open(self, event):
    filename = tkFileDialog.askopenfilename()
    if filename != "":
      im = PIL.Image.open(filename)
      if im.mode == "1": # bitmap image
        self.image1 = PIL.ImageTk.BitmapImage(im, foreground="white")
      else:              # photo image
        self.image1 = PIL.ImageTk.PhotoImage(im)
      self.la.config(image=self.image1,
                     width=self.image1.width(), height=self.image1.height())

  def init(self):
    self.image1 = PhotoImage()
    la = self.la = Label(self, image=self.image1, bg="#000000",
                         width=100, height=100)
    la.bind("<Button-1>", self.open)
    la.bind("<Button-3>", self.quit)
    la.pack()

  def __init__(self, master=None):
    Frame.__init__(self, master)
    self.master.title('PILシンプル画像ビューア')
    self.init(); self.pack()

if __name__ == "__main__":
  app = App(); app.mainloop()

セクションのサブメニューに戻る
(first uploaded 2002/03/16 last updated (not ever))