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