PythonとTkinterで画像ライン描画アプリを作ろう!


PythonとTkinterで画像ライン描画アプリを作ろう!

この記事では、PythonとTkinter、そしてPillow(PIL)ライブラリを使って、簡単な画像加工アプリを作る方法を紹介します。
初心者でもわかりやすいようにステップごとに解説するので、ぜひ一緒にチャレンジしてみてください!

目次

1. 初期インストール方法

まずは開発に必要なライブラリをインストールしましょう。

Pythonのインストール

Pythonがまだインストールされていない場合は、公式サイトからダウンロードしてインストールしてください。

公式サイト:https://www.python.org/

Pillow(PIL)のインストール

PillowはPython用の画像処理ライブラリです。次のコマンドでインストールできます。

pip install pillow

Tkinterの準備

TkinterはPythonに標準で含まれています。
ただし、Linux環境で動作しない場合は、以下のコマンドでインストールしてください。

sudo apt-get install python3-tk

2. プログラムの構成

今回作成するアプリの構成は以下の通りです。

要素内容
MainWindowアプリのメインウィンドウ
Frame上部に配置するボタン用の領域
Button「ファイルを開く」「ファイルを保存」ボタン
Canvas加工した画像を表示する領域

3. プログラムの機能説明

このアプリには次の機能があります。

  • 「ファイルを開く」ボタンで画像を選択
  • 緑色の垂直線と水平線を引いて加工
  • 加工した画像をキャンバスに表示
  • 「ファイルを保存」ボタンで、加工後の画像を保存

4. サンプルプログラムコード

以下が今回の完成版プログラムです。

import tkinter as tk
from tkinter import filedialog
from PIL import Image, ImageTk, ImageDraw

class ImageEditorApp:
    def __init__(self, root):
        self.root = root
        self.root.title("画像ライン描画アプリ")
        self.root.geometry("1400x800")

        self.image = None
        self.tk_image = None
        self.canvas_image_id = None

        self.create_widgets()

    def create_widgets(self):
        top_frame = tk.Frame(self.root, height=50, bg="#cccccc")
        top_frame.pack(side="top", fill="x")

        load_button = tk.Button(top_frame, text="ファイルを開く", command=self.loadFile)
        load_button.pack(padx=10, pady=10, side="left")

        save_button = tk.Button(top_frame, text="ファイルを保存", command=self.saveFile)
        save_button.pack(padx=10, pady=10, side="left")

        main_frame = tk.Frame(self.root)
        main_frame.pack(fill="both", expand=True)

        self.canvas = tk.Canvas(main_frame, bg="white")
        self.canvas.pack(fill="both", expand=True)

    def loadFile(self):
        file_path = filedialog.askopenfilename(filetypes=[("画像ファイル", "*.jpg *.jpeg *.png")])
        if file_path:
            self.image = Image.open(file_path).convert("RGB")
            self.drowLline()
            self.display_image()

    def drowLline(self):
        if self.image is None:
            return

        draw = ImageDraw.Draw(self.image)
        x_list = [11,101,191,281,371,461,551,640,730,820,909,998,1087,1177,1264]
        y_list = [15,143,270,396,520]

        for x in x_list:
            draw.line([(x, 0), (x, self.image.height)], fill="green", width=3)
        for y in y_list:
            draw.line([(0, y), (self.image.width, y)], fill="green", width=3)

    def display_image(self):
        if self.image is None:
            return

        self.tk_image = ImageTk.PhotoImage(self.image)

        if self.canvas_image_id:
            self.canvas.delete(self.canvas_image_id)

        self.canvas_image_id = self.canvas.create_image(0, 0, anchor="nw", image=self.tk_image)

    def saveFile(self):
        if self.image is None:
            return

        save_path = filedialog.asksaveasfilename(defaultextension=".jpg", 
                                                 filetypes=[("JPEGファイル", "*.jpg")],
                                                 initialfile="sample_drow.jpg")
        if save_path:
            self.image.save(save_path)
            print(f"保存しました: {save_path}")

def mainWindow():
    root = tk.Tk()
    app = ImageEditorApp(root)
    root.mainloop()

if __name__ == "__main__":
    mainWindow()

5. まとめ

今回紹介したアプリでは、PythonとTkinter、Pillowを使って

  • 簡単なウィンドウアプリの作成
  • ファイルダイアログによる画像読み込み
  • 線を引く画像加工
  • 加工した画像の保存

といった基本的なGUIプログラミングと画像処理を体験することができました。

さらに応用すれば、

  • 線の色や幅を変更できる機能を追加する
  • 加工内容をユーザーが自由に選べるようにする
  • 画像のフィルターやエフェクトをかける

など、発展させることもできます。

まずはこのサンプルをベースに、ぜひ自分だけのアプリ作成に挑戦してみてください!



✅ これで、そのままWordPressの「ビジュアルエディタ or コードエディタ」両方で使える
✅ コード部分も自然にEnlighterの自動ハイライト対象になります


もし、この記事用のアイキャッチ画像(例えば「Python × Tkinter × Pillow アプリ作成!」みたいなビジュアル)も作りたいなら、すぐに作れますよ。
やりますか?✨🎨

よかったらシェアしてね!
目次