原稿のテンプレートを他社のものに入れ替えたい、なんてことはないでしょうか。
サイズを合わせて別のテンプレートに重ね合わせるのを何十ページも繰り返すのは考えただけでも気が滅入りそうになりますよね。締め切り直前となれば尚更です。しかし全自動でできるとしたらどうでしょう。
筆者はC103の原稿でこれを行いました。最初はある印刷会社を想定して作っておりました。しかし、見積で7万円近くの金額を提示され、やむなくサンライズに乗り換えることにしたのです。
当然、テンプレートはサンライズ専用のものを利用しなければなりません。
そう、これがなかなか厄介なのです。
以下の手順を原稿の全ページに渡って繰り返します:
・テンプレートを読込
・原稿を一つ上のレイヤーとして読込
・ガイド線に合うよう、原稿レイヤーを縮小・移動
・画像を統合してpsdで保存
・ファイル名を付ける (01.psd, 02.psd, ...)
表紙は1つのファイルしかないので、手作業でも負担は小さいですが、原稿となると何十枚ものファイルを扱うので大変です。また、ファイル名の付け間違いといったミスも発生しやすくなります。
そこで、全自動でできる方法を考えました。先程の手順は決まった動作を繰り返すだけなので、プログラムによる処理には向いていそうです。プログラムと聞くと難しく感じてしまい、できそうにないと感じてしまう方もいるかもしれません。しかし、ここではコードを書くといったことはせず、コピペとパラメーターいじりだけでできてしまう内容なのでご安心を。
※このプログラムは、クリスタ・MedibangのA5 (3638x5102) をサンライズの「A5本文RGB」(2453x3307) に移植することを想定しています。違うテンプレートでは、パラメータを変更する必要があるかもししれません。
必要なもの:
手順:
・あらかじめ、本文の原稿を全てjpgで出力しておきます。EXでは一括書き出しが便利です。
完了すると、「comic_xxx.jpg」が出力されます 。
・GIMPのフィルター → Python-fu → Consoleを開きます。
・次に、以下のプログラムをテキストとしてコピーしましょう(沢山の#で囲んだ範囲)。ただし、太字の行は原稿によって異なるので、適宜変えてください。
内容は理解しなくて良いです。その内5か所、
・原稿のあるフォルダ
・出力フォルダ
・テンプレートのあるフォルダ
・テンプレートのファイル名
・本文ページ数
を編集してください。
ただし、ダブルクォーテーション「""」は消さないでください。そして、# (シャープ記号) の後ろはコメントといって、プログラムの動作に関係しないので消しても構いません。
########################
def Save(image, layer, file_path):
pdb.file_psd_save(image, layer, file_path, file_path, 0, 0)
# 3638x5102, 600dpiで描かれた原稿 (jpg) を
# サンライズ,A5,350dpiのテンプレート (psd) にはめ込む
# GIMPのscript-fuにコピペして実行
dirSRC = "X:/p/" # 原稿のあるフォルダ
dirDST = "X:/n/" # 出力フォルダ
tmpPath = "D:/mdp/c103/sunrise/" # テンプレートのあるフォルダ
tmpFile = "A5本文_RGB350.psd"# テンプレートのファイル名
tmpPSD = pdb.file_psd_load(tmpPath+tmpFile, tmpFile)
tmpLayer = gimp.Layer(tmpPSD, "tmp", tmpPSD.width, tmpPSD.height, RGBA_IMAGE, 100, NORMAL_MODE)
tmpPSD.add_layer(tmpLayer, 0) # add layer to mg
tmp_w=2175.0 # サンライズのA5テンプレート幅
src_w=3638
src_h=5102
scale= tmp_w/src_w
new_width=scale*src_w
new_height=scale*src_h
offx=int((src_w-new_width)/2.0)
offy=int((src_h-new_height)/2.0)
offx=140 # 原稿は(x,y)=(1,1)cm ずらして配置する。1cm / 2.54cm/in * 350dpi = 140px
offy=140
for i in range(24): # 24は本文ページ数。32ページの本なら32に書き換えましょう。
pageNum = i+1
filename = "comic_" + format(pageNum, '03d') + ".jpg" # 01.jpg, ..., 13.jpg, 99.jpg
outName = format(pageNum, '02d') + ".psd" # 01.psd, ..., 13.psd, 99.psd
second_layer = pdb.gimp_file_load_layer(tmpPSD, dirSRC+filename) # load the second file as a layer
tmpPSD.add_layer(second_layer, 0)# add the new layer to the first image
pdb.gimp_layer_scale(second_layer,new_width,new_height,True) #must be after add_layer
second_layer.set_offsets(offx, offy)# set pos
(num_layers,layer_ids) = pdb.gimp_image_get_layers (tmpPSD)
print(num_layers)
l = pdb.gimp_image_flatten(tmpPSD) #rasterize
Save(tmpPSD, l, dirDST + outName)
#tmpPSD.remove_layer (second_layer)
########################
・パラメータを変えたプログラムをGIMPのscript-fuにコピペしてenterを2回押すことで処理を入力します(画像では、メモ帳にプログラムをコピペして編集したものを入力しています)。
実行中はGimpの下段にプログレスバーが表示されます。
実行に成功すると、テンプレート移植されています。
※なお、for以下の段落ではタブコード (4つ字下げ) がありますが、スペースや全角空白に置き換えると動作しません。これはpythonという言語で書かれているのですが、段落のタブが文法を構成しているためです。