こんにちは!ゆーや(@yuyamanm118712)です。
こちらのページでは完全独学でWebプログラマとなった私が
デスクトップアプリには必須!!Tkinterでウィンドウに画像を表示する方法をご紹介します!
ゆーや
Tkinterの基本的な使い方は以下の記事を見てね!
Tkinterで「画面に画像を表示する」ためにはPhotoImageやpillowというライブラリを使います!
この記事を通して、PhotoImageやpillowを使いこなせるようになりましょう!
ゆーや
pillowが使えれば問題ないけど、
インストールが必要なので、状況に応じて選択してね!
画像表示に使うライブラリ
ゆーや
PhotoImageとpillowどちらも画像を表示するライブラリだけど
どんな違いがあるのかな!
PhotoImage
メリット
- 簡単に使える!
- 軽量!
ゆーや
インストールなしで使えるpython標準ライブラリだよ!
デメリット
- 対応フォーマットの制限…
- 機能の制限…
ゆーや
PNG,GIFなどしか対応していないよ!
単純に画像を表示する機能しかないので注意
pillow
メリット
- 多様な画像フォーマットに対応!
- 豊富な機能!
デメリット
- 追加のインストールが必要
- やや複雑
ゆーや
コッチを習得すれば画像関係は問題なし!
画像表示の基本
ゆーや
ここから「sample.png/ sample.jpg」という画像を用意して、
pythonファイルと同じ階層に配置しておいてね!
PhotoImage
import tkinter as tk
from tkinter import PhotoImage
# メインウィンドウの作成
root = tk.Tk()
root.title("tkinter 画像表示 - 完全独学Python") # ウィンドウタイトル
root.geometry("1200x300") # ウィンドウサイズ
# 画像の読み込み
img = PhotoImage(file="example.png") # 画像ファイルのパスを指定
# ラベルに画像を設定して配置
label = tk.Label(root, image=img)
label.pack()
# ウィンドウを表示
root.mainloop()
ゆーや
画像が表示されたね!
画像が途中で切れちゃう人はウィンドウのサイズを大きくしてみよう!
pillow
import tkinter as tk
from PIL import Image, ImageTk
# メインウィンドウの作成
root = tk.Tk()
root.title("tkinter 画像表示 - 完全独学Python") # ウィンドウタイトル
root.geometry("1200x300") # ウィンドウサイズ
# 画像の読み込み
img = Image.open("example.jpg") # 画像ファイルのパスを指定
tk_img = ImageTk.PhotoImage(img) # Tkinterで使えるように変換
# ラベルに画像を設定して配置
label = tk.Label(root, image=tk_img)
label.pack()
# ウィンドウを表示
root.mainloop()
ゆーや
こちらも問題なく表示されたね!
JPGもちゃんと表示されている!
画像のサイズ変更
PhotoImage
ゆーや
PhotoImageだけでは縮小ができません…
pillow
import tkinter as tk
from PIL import Image, ImageTk
# メインウィンドウの作成
root = tk.Tk()
root.title("tkinter 画像表示 - 完全独学Python") # ウィンドウタイトル
root.geometry("500x300") # ウィンドウサイズ
# 画像の読み込みとリサイズ
img = Image.open("example.jpg") # 画像ファイルのパスを指定
img = img.resize((200, 200)) # 画像のサイズを指定
tk_img = ImageTk.PhotoImage(img) # Tkinterで使えるように変換
# ラベルに画像を設定して配置
label = tk.Label(root, image=tk_img)
label.pack()
# ウィンドウを表示
root.mainloop()
ゆーや
横も縦も縮小されたね!
ただし、画像の比をきちんと把握しておかないときれいに縮小できないね!
画像をCanvasに表示
pillow
import tkinter as tk
from PIL import Image, ImageTk
# メインウィンドウの作成
root = tk.Tk()
root.title("tkinter 画像表示 - 完全独学Python") # ウィンドウタイトル
root.geometry("1200x300") # ウィンドウサイズ
# キャンバスの作成
canvas = tk.Canvas(root, width=500, height=300)
canvas.pack()
# 画像の読み込み
img = Image.open("example.jpg") # 画像ファイルのパスを指定
tk_img = ImageTk.PhotoImage(img) # Tkinterで使えるように変換
# 画像をキャンバスに表示
canvas.create_image(250, 150, image=tk_img) # 座標(250, 150)に画像を表示
# ウィンドウを表示
root.mainloop()
ゆーや
Tkinterでは、canvasにcreate_imageで画像を配置するのが基本!
ここまできっちり抑えておこう!
コメント