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

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

表紙カバーを裁断せずに「切り取る」ためのMacro

f:id:yu3xx:20200624024125j:plain

 

表紙カバーの処理、みなさんはどうしてますか?

 

表紙カバーも裁断して、CDで言うところのジャケットにあたる大事なオモテの部分だけ一番最初にドンと表示させるのが私は好きです。

 

でも、カバーを裁断するのって結構面倒だし、そのあとバラバラ細かいパーツがかさばって、たとえ一時的にでも保管するのが大変だと思うんですよね。

 

そこで今回ご紹介するのは、

 

表紙カバーを切らずにまるまんま長尺でスキャンしたものを、ImageJの画像処理で「トリミング」する方法です。

 

 

切り取り方法

f:id:yu3xx:20200102230529p:plain

Rectangle Toolを選択し、ROIを設定

まずRectangle Toolを使用して切り取りたい箇所にROI(Region of Interest:ロイ)を設定します。

 

その後、ImageJ上部タブから[Image]→[Crop]とするだけで「切り取る」ことが出来ます。

 

 

 

これだけです。 物理的に「裁断」するよりずっと簡単ですよね?

 

ただ、1枚だけだったらこれでもう十分なのですが、例えば100巻分これをやるとなると、いくらCropするだけだとしても気が滅入りますよね

 

そこで次は、フォルダにぶち込んだ全ての表紙カバーデータを、まとめて一気にCropするマクロを紹介します

 

 

Macroで一括自動Crop

指定したフォルダ内の全ての画像に対し、1枚目は手動でROIを設定し、2枚目以降はそのROI位置を用いて「切り取る」ためのマクロです。

 

//Crop_Using_ROI.txt

//Folder setting
showMessage("Select Open Folder");
openDir = getDirectory("Choose a Directory");
showMessage("Select Save Folder");
saveDir = getDirectory("Choose a Directory");
list = getFileList(openDir);

//Clear ROI Manager
roiCount=roiManager("count");
if(roiCount>0){
	roiManager("Deselect");
	roiManager("Delete");
}

//Operation
for (i=0; i<list.length;i++){
	operation();
}

roiManager("Deselect");
roiManager("Delete");
print("Crop",list.length,"images");
print("oshimai");

//Difine function
function operation(){

	open(openDir+list[i]);
	
	name = getTitle;
	dotIndex = lastIndexOf(name, ".");
	title = substring(name, 0, dotIndex);

	if(i==0){
		setTool("rectangle");
		waitForUser("ROI selection","Set ROI using rectangle tool, then click \"OK\".");
		roiManager("Add");
	}else{
		roiManager("Select", 0);
	}
	run("Crop");

	newname = title+".jpg";
	rename(newname);
	saveAs("Jpeg", saveDir+newname);
	close(newname);
}

表紙カバーのサイズは巻によってそこまで大きく変化しないため、1枚目のROI位置で全画像Cropしても、大きな問題はないと思います。 

 

 準備としては、「表紙データ」のみを一つのフォルダに集めておくだけでOKです。

 

 

マクロの起動方法

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

 

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

 

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

 

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

 

④上部タブ[Plugins]→[自炊]→[Crop Using ROI]でマクロが実行されます。

 

 

imagej-jisui.hatenablog.com

注意

ImageJはPDFファイルをサポートしていないので、PDFで自炊している方はあらかじめ全てのファイルをJPGに直しておいて下さい!

 

Macの方はデフォルトでインストールされている「Automator」を使用するとJPGに直すことが出来ます。

imagej-jisui.hatenablog.com

 

 

 

 

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

 

imagej-jisui.hatenablog.com