0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kritaで漫画描いた複数ページをPythonスクリプトでpng及びpdf出力

Last updated at Posted at 2024-10-13

やりたいこと。

kritaファイル名 [ヘッドネーム]数字連番.kra で保存されたファイルをoutフォルダにpngとpdfを作成すること。

・手順
 kraファイルからpngファイル出力
 pngファイルから結合してpdf化

kraファイルからpngファイル出力

ソースのカスタマイズ3か所

以下のkritaの作業場所フォルダと、出力先フォルダおよび、ヘッダー名を変更して下さい。
folder_path = "G:\work\漫画\45_202409_y" # kritaの作成フォルダ
output_folder = "G:\work\漫画\45_202409_y\out" # png出力フォルダ
pagehead = "page_" # ヘッドネーム page_00100.kra であれば page_としてください

python auto_page_to_output_png.py
import os
import re
from krita import *

# Kritaアプリケーションを取得
application = Krita.instance()

# 変換対象のフォルダを指定(Windows用にパスを修正)
folder_path = "G:\\work\\漫画\\45_202409_y"  # kritaの作成フォルダ
output_folder = "G:\\work\\漫画\\45_202409_y\\out" # png出力フォルダ

# ヘッドネーム neko_00100.kra であれば neko_としてください
pagehead = "page_"

# 出力フォルダが存在しない場合は作成
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# .kraファイル名のパターンにマッチする正規表現
kra_pattern = re.compile(rf"{pagehead}(\d+)\.kra")

# 指定フォルダ内の .kra ファイルを取得し、番号でソート
kra_files = []
for file_name in os.listdir(folder_path):
    match = kra_pattern.match(file_name)
    if match:
        page_number = int(match.group(1))  # pageの番号を取得
        kra_files.append((page_number, os.path.join(folder_path, file_name)))

# ページ番号でソート
kra_files.sort(key=lambda x: x[0])

# 各ファイルを開いてPNGとしてエクスポート
for page_number, kra_file_path in kra_files:
    # .kra ファイルを開く
    doc = application.openDocument(kra_file_path)
    if doc:
        # 出力するPNGファイルのパス
        output_file_path = os.path.join(output_folder, f"{pagehead}{page_number}.png")

        # エクスポート処理
        doc.exportImage(output_file_path, InfoObject())
        print(f"Exported: {output_file_path}")

        # ドキュメントを閉じる
        doc.close()
    else:
        print(f"Failed to open: {kra_file_path}")


ファイル名

ここではpythonで実行するために、krita作成のファイル名を [ヘッドネーム]数字.kra で保存してください。
例えば[ヘッドネーム]がpage_のとき
page_00100.kra
page_00200.kra

例えば[ヘッドネーム]がneko_のとき
neko_10.kra
neko_20.kra

実行方法

image.png

ツール>スクリプト>スクリプター>コードを張り付けて 実行 ▽マーク
image.png

pngファイルが作成される。
image.png

pngファイルから結合してpdf化

python3をインストールしてなければ、インストールして下さい。
kritaで動かそうとしましたが上手くいかなかったので。

pdf化するライブラリ等、適時スクリプト実行にエラーが発生しましたらインストールして下さい。

pip install Pillow

以下はライブラリのインストール
image.png

以下のスクリプトがoutフォルダ配下のpngを連結するスクリプト

ソースのカスタマイズ箇所2か所

以下のpng出力先フォルダと、pdf出力先を変更してください。
output_folder = r"G:\work\漫画\45_202409_y\out" # png出力フォルダ
output_pdf = r"G:\work\漫画\45_202409_y\out\put.pdf" # pdf出力先

python auto_page_to_output_pdf.py
 from PIL import Image
import os

# 変換対象のフォルダを指定(Windows用にパスを修正)
output_folder = r"G:\work\漫画\45_202409_y\out"  #  png出力フォルダ
output_pdf = r"G:\work\漫画\45_202409_y\out\put.pdf"  #  pdf出力先

# PNGファイルを取得してソート
png_files = sorted([os.path.join(output_folder, f) for f in os.listdir(output_folder) if f.endswith('.png')])

if png_files:
    images = [Image.open(png).convert('RGB') for png in png_files]
    
    # 最初の画像を基にしてPDFを生成し、残りの画像を追加
    images[0].save(output_pdf, save_all=True, append_images=images[1:])
    print(f"PDF successfully saved as: {output_pdf}")
else:
    print("No PNG files found for conversion.")


以上をDOSコマンドで実行
Windowsキー+R でファイル名を指定して実行を表示させて、cmdを入力してOK
image.png

コマンドプロンプトが起動されるので、先ほどのauto_page_to_output_pdf.py を実行する。

G:\work\漫画\45_202409_y>py auto_page_to_output_pdf.py
PDF successfully saved as: G:\work\漫画\45_202409_y\out\put.pdf

すると、out.pdfが出力される。

image.png

以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?