Inkscape 使い方メモ - トレースとファイル出力

3Dモデルを使って漫画の下絵

トレース用画像をCascadeurから取った場合の方法。

Cascadeurのカメラが平行投影に対応していないのが分かったため、次回はモデルをBlenderに戻して画像を取る方法を試します。



InkscapeからPDF, プレーンSVGを出力するスクリプト

# makePDF.py
# Inkscapeで作成したSVGからPDFとプレーンSVGを作成する
# SVGはページ番号付きで32ページ予め作成済み。PDFも32Pになる。
# コマンドライン引数:python3 makePDF.py 引数1 引数2
# 引数1はPDFからプレーンSVGを作成する時の開始ページ、引数2は終わりページ
# 一つしか指定していなければ該当ページだけ抜き出す
# 二つ指定してあり End - Start > 0 であれば複数ページを抜き出す
# pdftkが実行できるようにしておくこと

import sys, subprocess
Args = sys.argv

Title = "Inkscape トレースとファイル出力"   # エピソードのタイトル

DIR = "/media/keiko/WORKING/"       # 作業フォルダのパス(USBメモリ)

# pdftkはUSBメモリにあるファイルが読めない?
# しょうがないからデスクトップに出力
# PDF, プレーンSVGの出力先
OutputDIR = "/home/keiko/デスクトップ/漫画ブックレット/"

SVG = "'" + DIR + Title + ".svg" + "'"              # Inkscapeファイル名
PDF = OutputDIR + Title.replace(" ", "_") + ".pdf"  # PDFファイル名

# SVGから印刷入稿用のPDFを作る
cmd = "inkscape --export-filename=" + PDF + " --export-text-to-path " + SVG
subprocess.run(cmd, shell=True)

# PDFからWeb表示用のプレーンSVGを作る
## 抜き出すページの指定
pgRange = range(1, 32)
if len(Args) == 1:
    print("ページ番号を指定して下さい")
    exit()
try:
    if int(Args[1]) in pgRange:
        Start = int(Args[1])
    else:
        print("開始ページは1〜32の範囲です")
        exit()
except ValueError:
    print("開始ページ番号を正しく指定して下さい")
    exit()

if len(Args) >= 3:      # 引数2のチェック
    try:
        if int(Args[2]) in pgRange or int(Args[2]) == 32:
            End = int(Args[2])
        else:
            print("終わりページは1〜32の範囲です", int(Args[2]))
            exit()
    except ValueError:
        print("終わりページ番号を正しく指定して下さい")
        exit()

if (len(Args) >=3 and End - Start <= 0) or len(Args) == 2:
    pgList = [Start]
else:
    pgList = []
    while Start <= End:
        pgList.append(Start)
        Start += 1
print("この範囲でページを抜き出します", pgList)

## 指定されたページ番号のプレーンSVGを作る
for i in pgList:
    FileName = str(i).zfill(2)
    cmd = "pdftk " + PDF + " cat " + str(i) + " output " + OutputDIR + "outTemp.pdf"
    subprocess.run(cmd, shell=True)
    cmd = "inkscape --export-filename=" + OutputDIR + FileName + \
        ".svg --export-plain-svg " + OutputDIR + "outTemp.pdf"
    subprocess.run(cmd, shell=True)


関連記事