その漫画自炊オタクはImageJマクロに恋をする

プログラミングを用いた、自炊漫画の画像処理

見開き画像を一つに結合させるためのMacro(ver.2)

 

 

左右見開きの画像を結合させて、一つの大きな画像にするためのマクロです。

 

 

2022.12.02 追記

処理動作が速くなるように、マクロコードをまるっと改変しました。

 

 

 

 マクロコード

//TwoImage_Combine_v2.txt
//Combine Two Images (Left and Right)


version = "2.1.3";

print("");
print("TwoImage Combine_v2");
print("ver",version);

//numImg = nImages;
//if(numImg != 0) exit("Error. Close All Images.");

//select L image
waitForUser("Open \"Left\" image, then click [OK].");
numImg = nImages;
if(numImg != 1) exit("Error. Close Other Images.");

nameL = getTitle();
wL = getWidth();
hL = getHeight();

dotIndex = indexOf(nameL, ".");
ext = substring(nameL,dotIndex);

print("Image(L)...",nameL);
selectWindow("Log");


//select R image
waitForUser("Open \"Right\" image, then click [OK].");
numImg = nImages;
if(numImg != 2) exit("Error. Close Other Images.");

nameR = getTitle();
wR = getWidth();
wR2 = wR;
hR = getHeight();

print("Image(R)...",nameR);
selectWindow("Log");


//Enter parameter
Dialog.create("Processing Setting");
items = newArray("white","black");
Dialog.addRadioButtonGroup("Back Ground", items, 1, 2, "white");
Dialog.addNumber("Gap (offset)",0);
Dialog.addNumber("Pixel Shift (Right Image, (+)...down, (-)...up)",0);
Dialog.show;

bg = Dialog.getRadioButton();
offset = Dialog.getNumber();
pxShift = Dialog.getNumber();


//backGround color
if(bg == "black") setBackgroundColor(0, 0, 0);
if(bg == "white") setBackgroundColor(255, 255, 255);


//offset
if(offset > 0){
	selectWindow(nameR);
	wR2 = wR+offset;
	run("Canvas Size...", "width=wR2 height=hR position=Center-Right");
}


//pxShift
if(pxShift > 0) {
	selectWindow(nameR);
	hR2 = hR+pxShift;
	run("Canvas Size...", "width=wR2 height=hR2 position=Bottom-Center");
}
if(pxShift < 0) {
	selectWindow(nameL);
	pxShift2 = abs(pxShift);
	hL2 = hL+pxShift2;
	run("Canvas Size...", "width=wL height=hL2 position=Bottom-Center");
}

//combine
run("Combine...", "stack1=nameL stack2=nameR");
newname = "Combined Image"+ext;
rename(newname);
print("Gap =",offset,", pxShift =",pxShift);


setBackgroundColor(255, 255, 255);
print("oshimai");

 

 

使い方

① マクロ起動後、ウィンドウの指示に従って「左側」にくる画像を開いて[OK]。

 ※この時点で「右側」の画像もすでに開いている場合、エラーになります。

② 次のウィンドウの指示に従って「右側」にくる画像を開いて[OK]。

 

 

③ 各種設定を入力する。

  • Back Ground Color
  • Gap (offset)...左右の画像の間隔は何pixelか? 裁断して切り落とした部分は、詰めない方が自然に仕上がります。Gap部分はBackGroundの色になります。
  • Pixel Shift...左右画像の上下のズレを補正するため、画像を入力したpixel分移動させる。「+側」を入力すると、「右画像」が下にスライドする。「-側」を入力すると、「左画像」が下にスライドする、つまり感覚的には、右画像が上にスライドする。

 

⑤ [OK]をクリックすると、画像結合後の画像が表示されます。よければお好みの名前で保存してください。

 

 

 

マクロの起動方法

①ImageJ上部タブの[Plugins]→[New]→[Macro]で起動したエディタに、上のコードをコピペしてtxtファイル(TwoImage_Combine_v2.txt)を作成・保存する。

 

②保存したファイルをImageJフォルダ内の[plugins]フォルダにしまう。

 

このとき、[plugins]フォルダの中に新たに適当な名前のフォルダを作って、その中にしまってもOKです。ここでは仮に「自炊」というフォルダにtxtファイルを突っ込んだとします。

 

③一度ImageJを再起動すると、マクロがインストールされ、起動準備OK。

 

④上部タブ[Plugins]→[自炊]→[TwoImage Combine v2]でマクロが実行されます。

 

imagej-jisui.hatenablog.com

 

 

 

 

 

ライセンスなんかは一切無いので、ぜひぜひ自由に使ってみてください!

  

imagej-jisui.hatenablog.com