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 アプリ作成!」みたいなビジュアル)も作りたいなら、すぐに作れますよ。
やりますか?✨🎨