tkinterで画像表示する方法 jpgに対応



Python
Pythonとは
基本的な使い方
IDLE

Jupyter Notebook

Markdown

コマンドプロンプトで実行

仮想環境の構築

仮想環境でIDLEを実行

ライブラリのインストール
pipの使い方

numpy , matplotlib等

graphviz

pytorch

Mecab

Pythonの関数:一覧
共通関数
append , extend

class

copy

csv.reader

csv.writer

def , return

dict , defaultdict

enumerate

exit

for

if

import

in

input

lambda

len

list

min/max

OrderedDict

open/close

os

pickle

print

range

re.split

read/readline

round/floor/ceil

split

sys.argv

time

while

write

zip

・特殊メソッド
 ・__name__

 ・__iter__ , __next__

正規表現、メタ文字

データの型の種類

四則演算 (+ , - , * , /)

コメントアウト (# , ''')

numpy
append

arange

argmax/argmin

array

asfarray

astype , dtype

digitize

dot

hstack/vstack

linalg.solve

linspace

max,min

mean

meshgrid

mgrid

ndim

ndmin

pad

poly1d

polyfit

prod

random

reshape

savetxt/loadtxt

shape

std

transpose

where

zeros/zeros_like

scipy
expit

imread

interpolate

matplotlib
imshow

figure

pcolormesh

plot

quiver

scatter

scikit-learn
GaussianNB

KMeans

KNeighborsClassifier

SVC

tree

chaospy

keras

chainer

chainerrl

pytorch
BCELoss , MSELoss

Embedding

device

Sequential

Dataset, Dataloader

RNN, LSTM

OpenAI gym
Blackjack-v0

CartPole-v0

tkinter
frame, grid

画像表示

画像を切り取り表示

画像を保存

目的別
ステップ関数

1 of K 符号化法

線形補間

配列に番号をつける

ベクトル場を描く

線形回帰, 多項式回帰


公開日:2021/10/8         

In English


■tkinter関数の説明

tkinterで画像を表示させる方法を説明します。jpgにも対応します。

■tkinter関数を使用した具体例

ImageTkを使用すれば、jpgを表示することができます。

import tkinter as tk
from PIL import Image, ImageTk

app = tk.Tk()
img = Image.open('test.jpg')        # 画像ファイルを開き、ファイル情報取得。text.jpgは任意に設定
tk_img = ImageTk.PhotoImage(img)
img_width, img_height = img.size

canvas = tk.Canvas(app, width=img_width, height=img_height)        # 画像表示エリアの作成
canvas.pack()
canvas.create_image(0, 0 , anchor = tk.NW, image=tk_img)        # 画像表示

app.mainloop()


結果は以下のとおり。


<create_imageの中身>

create_image( X座標 , Y座標 , anchor=表示タイプ ,image=画像名)


ancharは以下のとおりです。

       xの0     yの0
"NW"   画像左     画像上
"W"    画像左     画像中央
"N"    画像中央    画像上
"SE"   画像右      画像下
"S"    画像中央    画像下
"E"    画像右     画像中央
"CENTER" 画像中央    画像中央  (デフォルトはこれ)

■関数化すると画像が表示しなくなる事への対応
画像表示部分を関数化して呼び出す場合、そのままでは画像が表示されなくなります。 原因は一度画像を表示しても、関数が終了した時点で画像情報が不要になったと判断され、内部で削除してしまうからです。対応方法として、以下赤字部分のとおり画像情報をグローバル変数にするか、 青文字部分のように画像情報をdefの外で格納するようにします。赤文字部分青文字部分はどちらか記載するだけで良いです。

import tkinter as tk
from PIL import Image, ImageTk

def draw():
    global tk_img        # 画像情報をグローバル変数にする。
    img = Image.open('test.jpg')        # 画像ファイルを開き、ファイル情報取得。text.jpgは任意に設定
    tk_img = ImageTk.PhotoImage(img)
    img_width, img_height = img.size

    canvas = tk.Canvas(app, width=img_width, height=img_height)        # 画像表示エリアの作成
    canvas.pack()
    canvas.create_image(0, 0 , anchor = tk.NW , image=tk_img)        # 画像表示
    image.append(tk_img)

app = tk.Tk()
image =[]
draw()

app.mainloop()










サブチャンネルあります。⇒ 何かのお役に立てればと

関連記事一覧



Python
Pythonとは
基本的な使い方
IDLE

Jupyter Notebook

Markdown

コマンドプロンプトで実行

仮想環境の構築

仮想環境でIDLEを実行

ライブラリのインストール
pipの使い方

numpy , matplotlib等

graphviz

pytorch

Mecab

Pythonの関数:一覧
共通関数
append , extend

class

copy

csv.reader

csv.writer

def , return

dict , defaultdict

enumerate

exit

for

if

import

in

input

lambda

len

list

min/max

OrderedDict

open/close

os

pickle

print

range

re.split

read/readline

round/floor/ceil

split

sys.argv

time

while

write

zip

・特殊メソッド
 ・__name__

 ・__iter__ , __next__

正規表現、メタ文字

データの型の種類

四則演算 (+ , - , * , /)

コメントアウト (# , ''')

numpy
append

arange

argmax/argmin

array

asfarray

astype , dtype

digitize

dot

hstack/vstack

linalg.solve

linspace

max,min

mean

meshgrid

mgrid

ndim

ndmin

pad

poly1d

polyfit

prod

random

reshape

savetxt/loadtxt

shape

std

transpose

where

zeros/zeros_like

scipy
expit

imread

interpolate

matplotlib
imshow

figure

pcolormesh

plot

quiver

scatter

scikit-learn
GaussianNB

KMeans

KNeighborsClassifier

SVC

tree

chaospy

keras

chainer

chainerrl

pytorch
BCELoss , MSELoss

Embedding

device

Sequential

Dataset, Dataloader

RNN, LSTM

OpenAI gym
Blackjack-v0

CartPole-v0

tkinter
frame, grid

画像表示

画像を切り取り表示

画像を保存

目的別
ステップ関数

1 of K 符号化法

線形補間

配列に番号をつける

ベクトル場を描く

線形回帰, 多項式回帰