数時間前,「ポケモンカードゲーム AI Battle Challenge」がスタートしました.
カードゲームでは,利用可能なカード一覧を把握することが非常に大切です.
ただ,公式から提供されているデータだと,カードの把握が困難だと感じました.
そこで,自分自身のために,
PDFから画像を切り抜いて一覧化して表示するプログラムを作成しました.
この記事では,そのプログラムを紹介します.
PDFから画像を切り抜いて一覧化して表示する
利用するプログラムの言語はPythonです.
また,PyMuPDFを利用します.pip install pymupdf でインストールできます.
PDFから画像を切り抜いて一覧化して表示するプログラムは,以下になります.
import fitz
INPUT = "Card_ID List_JP.pdf"
OUTPUT = "Card List.pdf"
X, Y, W, H = 160, 90, 290, 398
START_PAGE, END_PAGE = 39, 99
COLS, ROWS = 5, 2
PER_PAGE = COLS * ROWS
src = fitz.open(INPUT)
out = fitz.open()
clip = fitz.Rect(X, Y, X + W, Y + H)
for i in range(START_PAGE, END_PAGE, PER_PAGE):
page = out.new_page(width = COLS * W, height = ROWS * H)
for j, pno in enumerate(range(i, min(i + PER_PAGE, END_PAGE))):
x = j % COLS * W
y = j // COLS * H
dst = fitz.Rect(x, y, x + W, y + H)
page.show_pdf_page(dst, src, pno, clip=clip)
out.save(OUTPUT)
23行の短いプログラムになります.
大文字変数の値を変更することで,どのようなPDFファイルにも対応できるはずです.
元のPDFから切り抜く縦横の範囲を X, Y, W, H で指定します.
その後,切り抜くページ範囲と切り抜いたページの並べ方を指定します.
今回は39~99ページの中央付近を切り取り,それらを縦2×横5で1ページとなるように一覧化しています.
元のPDFで60ページにわたる内容を,その1/10の6ページで確認できるようにしています.
大きいモニターがある人は,COLS, ROWS = 8, 3 あたりが丁度良いかもしれません.
終わりに
PDFから画像を切り抜いて一覧化して表示する方法を紹介しました.
需要があると思い,短時間で一気に記事を書きあげました.
このプログラムも活用して最強のデッキを作り上げ,コンテストに参加しましょう.
※ 本記事は個人による技術記事です.株式会社ポケモンおよびコンテスト運営とは関係ありません.配布データおよび画像は掲載せず,汎用的なプログラムのみを紹介しております。