いわずと知れた、[[Adobe:http://www.adobe.co.jp]]社の画像処理ソフト。バージョンはCSを使用中。

*画像の接続 [#z7198bd6]
「接続」とは別にPhotoshop用語ではないが、広い領域の画像を表現するのに、部分部分の複数の画像ファイルをジグソーパズルのように接続して大きい画像を仕上げる様を表現したつもり。この方法のメモ

こんな場合には、まずpngなりjpgなりの似たような大量の画像ファイルありきで、まずこれを一気に配置する必要がある。これはこのページ内のスクリプトを使う。

最初の1枚を適当な場所に置く。そしてそれに接続できるピースのレイヤを半透明度50%くらいにする。こうすると最初のピースとの重複部分を重ねるのがとてもやりやすい。そしてこのレイヤースタイルをコピーしておく。

重ね終えたらレイヤースタイルを消去し不透明に戻す。そして3枚目のピースにレイヤースタイル(半透明50%)をペーストとすると一瞬でこれも半透明となるので、2枚目に重ねる。これを順次繰り返す。

最後にレイヤメニューから画像を統合などとして、レベル補正を行うと無事に巨大画像が完成する。仕上がりにこだわるならレイヤ毎に補正した方がよいがこれは面倒。

今までバッチ処理でレベル補正した後にIllustrator上でネチネチ接続していたため、完成後の画像の切取り等諸処理が面倒だったが、Photoshop上で接続すればとっても楽なことに気づいた今日という日なのであった。

*バッチ処理 [#t66ae336]
photoshopに限らず、単純な繰り返しはコンピュータにやらせるべきである(人間がやるべきではない)。photoshopには、このためにバッチ処理というものが用意されており、複数のファイル(同一ディレクトリ内)に同じアクションを施せる。JavaScriptでスクリプトを記述することもできるが、バッチ処理の方がお手軽で手間対効果が高い。とりあえず的な方法を以下に記述した。

+アクションの記録用に、処理すべきファイルのコピーをとってそれを開く。
+ウィンドウ -> アクション とし、アクションパレットを開いておく。
+パレットメニューより「新規セット」を選び、適当に名付ける。(必須ではない)
+同様に「新規アクション」とし、先程のセットを選択。ファンクションキー、カラーはどうでもいい。
+新規アクションの作製と同時にアクション記録モードとなるので、やりたい動作を画像に施す。最後に「保存」「閉じる」までしておくと、きちんと後片付けができる。
+パレットメニューの「記録中止」か停止ボタンで記録停止。アクションを追加するには、「記録開始」か開始(録音)ボタンを押すと再び記録モードとし、追加の後に同様に停止させる。
+ファイル -> 自動処理 -> バッチ で、先程のアクションを選び、対象フォルダを選んでOKボタンを押す。

*PDF画像 [#e42eda09]
ファイル->読み込み->PDF画像 とすると、指定したPDFから画像部分だけを抜き出して開いてくれる。
上のバッチ処理と組み合わせるとPDFの図をほぼ機械的に画像ファイルとして書き出すことができる。

ただしファイル名が長いと、「Web用に保存」する際のデフォルトのファイル名が途中で途切れて各PDF画像について同じファイル名となってしまい、バッチ処理を行うと次々に上書きされてゆくハメになる。その場合、PDFをあらかじめ短かいファイル名に変更しておけば良い。

*スクリプト [#uc6206b2]
スクリプトによる操作の記述が可能。詳しく見てないが、Illustratorのそれよりも高機能そうな印象を受けた。
**link [#m861207b]
-[[画像を読み込んで配置する:http://www.openspc2.org/book/PhotoshopCS/start/006/index.html]]
-[[メルマガ「すべてのクリエイターのために【日刊デジタルクリエイターズ】」のバックナンバー:http://www.melonpan.net/letter/backnumber_all.php?back_rid=369583]]
**画像配置 [#ie0eecb7]
何枚もの画像ファイルを一気に配置させたいと思った。いちいち「開く」→「全選択、コピー」→「ペースト」→「閉じる」→「レイヤの名前を適当に変更」なんてことをやっていたら気が狂うので困ったと思っていた時に書いたもの。
 try
 {
   folderObj = Folder.selectDialog("where are the files ?", Folder.current);
   if(null == folderObj) throw "user canceled";
   targetExtension = prompt("extension of the images","png");
   if(null == targetExtension) throw "user canceled";
   fileList = folderObj.getFiles("*." + targetExtension);
   if(fileList.length == 0) throw "no images";
 
   theDoc = activeDocument;
   for (i=0; i<fileList.length; i++)
   {
     open(fileList[i]);
     activeDocument.selection.selectAll();
     activeDocument.activeLayer.copy();
     activeDocument.close(SaveOptions.DONOTSAVECHANGES);
     theDoc.paste();
     theDoc.activeLayer.name = fileList[i].name;
   }
 }
 catch(e)
 {
   alert("Error: " + e);
 }