以下のような2つのBMP画像がある場合、自動でマスク画像を合成して、以下のような1つのPNG画像を作ってくれるPhotoshopのjsxスクリプトです。
↓
キャラの足下の影の部分が半透明になっていますね。24bit RGB画像に8bitアルファを持つ、32bit RGBAのPNGファイルを出力します。
Windows7 + PhotoshopCS4で動作を確認。
mixMaskImage.jsx
//for PhotoshopCS4 preferences.rulerUnits = Units.PIXELS; //特定のフォルダ配下の「*-m.bmp」「*-M.bmp」を順にすべて開く var dirObj = Folder.selectDialog("フォルダを選択せよ"); var maskFiles = dirObj.getFiles("*-?.bmp"); for(var i=0; i<maskFiles.length; i++){ //var i = 0; ←スクリプト作成中に動作確認するとき、ループのforをcomment化して、これでtest var tmpArray = maskFiles[i].name.split(/\-.\./i); // 最後のdirectory separator以下(=ファイル名)を削除 var theDir = maskFiles[i].fsName.replace(/[\/\\][^\/\\]*$/, '/'); //alert('maskFiles.fsName='+maskFiles[i].fsName + ', theDir='+theDir); var imgFile = new File(theDir + tmpArray[0] + '.bmp'); //alert('mask='+maskFiles[i] + ', img='+imgFile + ', tmpArray='+tmpArray + ', dirObj='+dirObj); //マスクファイル開く var theMask = app.open(maskFiles[i]); //indexMode→GrayScaleに変更。これしないと[選択範囲を読み込む]ができない theMask.changeMode(ChangeMode.GRAYSCALE); //theMask.activeLayer.invert(); //画像ファイル開く var theImg = app.open(imgFile); //「背景」→「レイヤー0」にする。これしないと削除した箇所が透明にならない if (theImg.activeLayer.isBackgroundLayer) theImg.activeLayer.opacity = 100; //選択範囲を読み込む→削除→選択解除 theImg.selection.load(theMask.channels[0]); theImg.selection.clear(); theImg.selection.deselect(); //マスクファイル閉じる theMask.close(SaveOptions.DONOTSAVECHANGES); //新規ファイル名でPNGとして保存→閉じる var newFile = new File(theDir + tmpArray[0] + '.png'); var pngOpt = new PNGSaveOptions(); pngOpt.interlaced = false; theImg.saveAs(newFile, pngOpt, true); theImg.close(SaveOptions.DONOTSAVECHANGES); }
これをテキストファイルに文字コードUTF-8で保存して、[ファイル-スクリプト-参照]で実行します。
本体画像:例「ABC012.bmp」 24bit BMP
マスク画像:例「ABC012-m.bmp」または「ABC012-M.bmp」 8bit BMP
が同じフォルダに置いてある、そのフォルダを指定します。
あとは自動で実行してくれますよ。そのフォルダにBMP画像を複数置いておけば、複数ファイルをまとめて処理してくれます。
マスク画像の白黒が逆(黒が透明)の時は、スクリプトを以下に変更してください。マスク画像に対して[イメージ-色調補正-階調の反転]処理を追加しています。
--- R:/mixMaskImage.jsx.original Tue Dec 24 09:30:16 2013+++ R:/mixMaskImage.jsx Tue Dec 24 09:32:24 2013@@ -19,11 +19,11 @@ //マスクファイル開く var theMask = app.open(maskFiles[i]); //indexMode→GrayScaleに変更。これしないと[選択範囲を読み込む]ができない theMask.changeMode(ChangeMode.GRAYSCALE); - //theMask.activeLayer.invert();+ theMask.activeLayer.invert(); //画像ファイル開く var theImg = app.open(imgFile); //「背景」→「レイヤー0」にする。これしないと削除した箇所が透明にならない if (theImg.activeLayer.isBackgroundLayer) theImg.activeLayer.opacity = 100;
使用したキャラチップ First Seed Material http://www.tekepon.net/fsm
スクリプトで参考にしたサイト: http://www.openspc2.org/book/PhotoshopCS4/
![神速Photoshop [グラフィックデザイン編] 神速Photoshop [グラフィックデザイン編]](http://ecx.images-amazon.com/images/I/518DhA5DeeL._SL160_.jpg)
- 作者:浅野桜,石嶋未来,加藤才智,服部紗和,ハマダナヲミ
- 出版社/メーカー:アスキー・メディアワークス
- 発売日: 2013/01/09
- メディア:大型本
- クリック: 40回
- この商品を含むブログ (1件) を見る