【Photoshop】自力で同人誌の小口を装飾する人のためのスクリプト

#概要
>自力で同人誌の小口を装飾する人のためのスクリプトです
　・装飾に使う小口染画像のイメージ領域を作成するスクリプト
　・小口染画像を実際に完成原稿に貼り付けるスクリプト
　上記２種のスクリプトからなりたっています

#アイデア元
>百さんのツイート【同人誌の小口を自力で装飾する方法】を参考に作成しました
ただし本スクリプトは全て私(超.S)が組んでいるのでスクリプト実行において問題が発生したとしても**百さんに関係はまったくございません**のでご注意下さい
![kikkake.png](https://qiita-image-store.s3.amazonaws.com/0/119469/27f09564-968f-897d-5f5e-d1a33a17e9b1.png)



#スクリプトのDL
　[スクリプトはここからDL](https://box.yahoo.co.jp/guest/viewer?sid=box-l-dncmpjr534ws6tbacm3dnnx32e-1001&uniqid=e5037086-3268-4bf5-8066-d94058c54f6b&viewtype=detail)

#使い方
>
まずは使い方から説明します
##動作確認済環境
>* photoshopCC 2015
* Windows7 64bit　

>##必要なこと
* 完成原稿psdファイルのみがはいったフォルダ
* 完成原稿の名前は半角英数字でないと文字化けする
* **完成原稿の紙余白天地と左右は同じ長さでなければいけない**

>##スクリプトを実行するとおこること
* 指定のフォルダに小口画像が貼付け結合されたファイルが自動生成されます（上書きしません）
* 生成されたファイル名の命名規則は　→　【生成されるファイル名 + 連番 +.psd】
* 生成されたファイルの描画モードは必ず**グレースケールモード**です
* 生成されたファイルのレイヤは1枚に結合されてから保存されます
* 小口は必ず左ページから貼付けされます
* 使用は自己責任でお願いします

>##使い方
>### 小口に使用する画像を作成する
小口に使用する画像のサイズを自動計算します
>>1. ファイル>スクリプト>参照
![e46e8027-f237-c8a4-0b4a-f00984742c7c.png](https://qiita-image-store.s3.amazonaws.com/0/119469/411bb191-8f8c-186d-21bc-bbd4c39afc77.png)

>>1. DLしたスクリプト**CreateKoguchiPct.jsx**を選択して読み込む
![01.png](https://qiita-image-store.s3.amazonaws.com/0/119469/a1d5de62-7bcf-ee33-7050-c46ff6e3aa5a.png)

>>1. スクリプトが起動してダイアログが出る
![02.png](https://qiita-image-store.s3.amazonaws.com/0/119469/d0435c6a-819b-347e-2f59-bfb411a9194f.png)

>>1. ダイアログの対応している項目(↓は完成原稿だと思って下さい)
![05.png](https://qiita-image-store.s3.amazonaws.com/0/119469/26ba8f6e-c57c-f8dd-446b-c77ae976800e.png)

>>1. 必要事項を入力すると小口装飾に使用するためのイメージ領域が生成される
![06.png](https://qiita-image-store.s3.amazonaws.com/0/119469/e9ccd5c4-cf35-649c-352f-fdd084dd96f2.png)
↓説明
![07.png](https://qiita-image-store.s3.amazonaws.com/0/119469/b4f4d598-afc4-1aa8-c042-138366c02520.png)
真ん中の部分と塗りたし範囲まで装飾をかいてください

>>1. 作成できたらタイトルを**半角英数字**で保存
![08.png](https://qiita-image-store.s3.amazonaws.com/0/119469/1514c9f4-0b30-2c0b-e2dc-d72563f1ff54.png)

>### 作成した小口画像を完成原稿に貼る

>>1. ファイル>スクリプト>参照
![e46e8027-f237-c8a4-0b4a-f00984742c7c.png](https://qiita-image-store.s3.amazonaws.com/0/119469/411bb191-8f8c-186d-21bc-bbd4c39afc77.png)

>>1. DLしたスクリプト**CreateKoguchiData.jsx**を選択して読み込む
![09.png](https://qiita-image-store.s3.amazonaws.com/0/119469/5905f36c-a86b-d6cd-12c6-c0388f4fb048.png)

>>1. スクリプトが起動してダイアログが出る
![10.png](https://qiita-image-store.s3.amazonaws.com/0/119469/8ea0bba7-4518-43fe-6781-8ab570ba4e76.png)

>>1. ダイアログの対応している項目(↓は完成原稿だと思って下さい)
![11.png](https://qiita-image-store.s3.amazonaws.com/0/119469/723b719e-00f1-3467-3376-fd89882e5fee.png)
**スクリプト適用フォルダ、作成ファイル保存先、作成ファイル名　のパス及び名称は半角英数字にしてください。
半角英数字以外が含まれると文字化けします**
ex. C/Document/genko/genko.psd ←OK!
    C/Document/原稿/genko.psd ←NG
    C/Document/原稿/原稿.psd ←NG

>>1. OKを押す

>>1. あとは待つだけ　作成ファイル保存先フォルダにデータが生成されます

#コード
>今回は全文載せるのもどうかと思うので、役に立った関数をいくつかのせます
前回同様修正が必要な箇所があればご教示ください

>##jsxのインクルード
インクルードしたいjsxファイルを宣言するだけでいい
しかもそのままインクルード先の関数にアクセスできる

>```js
#include "ominoDialogMaker.jsx"
```

>##jsxファイルをクリックするだけでフォトショを自動起動
先頭にかくだけ

>```js
#target photoshop
```

>##画像解像度を変更する
横幅と縦幅だけでも解像度は変更することができる

>```js
//データをリサイズ
    //1番目の引数は横幅
    //2番目の引数は縦幅
    //最低限、横幅と縦幅の引数が必要。
    //3番目の引数は解像度
    //4番目の引数はサンプリング
    activeDocument.resizeImage( width, heitgh, resolution, ResampleMethod.BILINEAR);
```

>##レイヤの描画モードを変更する

>```js
    var docObj = activeDocument.artLayers;
    docObj[0]. blendMode = BlendMode.NORMAL ;//通常レイヤ
    //docObj[0]. blendMode = BlendMode.MULTIPLY;//乗算レイヤ
    }
```

>docObj[0] ←一番上のレイヤ
レイヤが増えていくたびに1,2,3...と増えていく
レイヤの枚数は lengthで得られる

>```js
    var maisu = docObj.length; //枚数
```

>##選択範囲にペースト
チャンネル等いじっていたら望む結果がえられなかった
下記だけでもいいみたい（グレスケだったからだろうか）

>```js
    activeDocument.selection.select(selReg);
    activeDocument.paste();//選択範囲にペースト
```

>##画像結合について
イメージモードが2値化のデータに画像結合命令するとエラーになるよ

>```js
activeDocument.mergeVisibleLayers();    //画像を結合
```
>```js
//カラーモードが2値化でなければ結合する
var colMode = activeDocument.mode;  //カラーモードを調べる
if(colMode != DocumentMode.BITMAP){
    activeDocument.mergeVisibleLayers();
}
```

>##その他
>>###用紙サイズ(mm)からのピクセル値を求める
>>>####解像度と用紙サイズからピクセル値に変換する式
用紙の一辺の長さ[mm] × 解像度[dpi] ÷ 25.4 = 求めたいピクセル[pixel]

#感想
>* javascript３日目　ちょっと複雑なものが作れるようになった
* 一作目にくらべるとコードが綺麗になった嬉しい～
* ominoDialogMaker.jsx　は元のものから少し手を加えてあるので気をつけて下さい(add by～コメントいれました)
* 上下の小口も作れそうだな（左右反転しなきゃならないのとやっぱり説明めんどくさそう）
* 今回も設定項目多いけど負けないで欲しい、項目数はできるだけ減らしたのですが・・・
* jsxファイル作るのとっても面白い

#参考サイト
>[OpenSpace](http://www.openspc2.org/)
 　他のバージョンやリファレンスへのリンクもありました
[Adobe Photoshop CC自動化作戦](http://www.openspc2.org/book/PhotoshopCC/)
　 上記サイトOpenSpaceさんのコンテンツのひとつ
[Adobe CC バージョンJavaScript リファレンス](http://www.openspc2.org/reibun/AdobeJS/CC/index.html)
 　日本語でありがたい
[Photoshop CS5 JavaScript Reference(PDF)](http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/photoshop/pdfs/photoshop_cs5_javascript_ref.pdf)
 　Adobe公式 英語 最終的にはここから検索するしかなかった 他バージョンは[こちらから](http://www.adobe.com/devnet/photoshop/scripting.html)
[Adobe Photoshop CS5 Object Library](http://jongware.mit.edu/pscs5js_html/psjscs5/index.html)