はじめに
PNG(Portable Network Graphics)ファイルは、画像データだけでなくテキスト情報やメタデータも持っています。
この記事では、TkinterとPIL(Pillow)ライブラリを使用して、ドラッグアンドドロップでPNGファイルからテキスト情報を取得し、表示するシンプルなPythonスクリプトを紹介します。
必要なライブラリ
このツールを動かすためには以下のPythonライブラリが必要です。
- Tkinter (標準ライブラリなのでインストール不要)
- tkinterdnd2
- PIL (Pillow)
- pyperclip
インストールは以下のように行います。
pip install tkinterdnd2 Pillow pyperclip
コード
以下が主なコードです。
png_metadata.py
Copy code
import tkinter as tk
from tkinterdnd2 import DND_FILES, TkinterDnD
from PIL import Image
import pyperclip
import os
def get_png_text_data(file_path):
safe_file_path = os.path.normpath(file_path)
image = Image.open(safe_file_path)
return image.info
def on_drop(event):
file_path = event.data.strip().strip('"').strip('{}')
text_info = get_png_text_data(file_path)
text_str = "\n".join([f"{k}: {v}" for k, v in text_info.items()])
pyperclip.copy(text_str)
text_widget.delete(1.0, tk.END)
text_widget.insert(tk.END, text_str)
label.config(text="PNGのテキスト情報:")
root = TkinterDnD.Tk()
root.title("PNGテキスト情報取得ツール")
root.geometry("600x400")
label = tk.Label(root, text="PNGファイルをここにドラッグ&ドロップしてください。")
label.pack(pady=10)
text_widget = tk.Text(root, wrap=tk.WORD)
text_widget.pack(padx=10, pady=10, expand=True, fill=tk.BOTH)
root.drop_target_register(DND_FILES)
root.dnd_bind('<<Drop>>', on_drop)
root.mainloop()
使い方
スクリプトを実行します。
python png_metadata.py
GUIウィンドウが表示されます。
PNGファイルをウィンドウにドラッグ&ドロップします。
テキストボックスにPNGファイル内のテキスト情報が表示されます。
このテキスト情報は自動的にクリップボードにもコピーされます。
まとめ
このスクリプトは、TkinterとPILを使って非常に簡単にPNGファイルのテキスト情報を取得できるツールです。
ドラッグ&ドロップで手軽に情報を得られるため、画像のメタデータを簡単に調べたい場合に非常に便利です。