クリエイター手抜きプロジェクト[386]Adobe Photoshop CS3〜CC編 画像を左上と右下の相対座標を指定して切り抜く/古籏一浩

投稿:  著者:  読了時間:9分(本文:約4,100文字)


今回は、Photoshopで画像を左上と右下の相対座標を指定して切り抜くスクリプトです。Photoshopには選択した範囲を切り抜く機能がありますが、アクションで登録してしまうと、固定された座標と幅になってしまいます。左上からの位置と右下からの位置を設定して切り抜きたい場合には困ります。


もともとの用途は、DTP処理でMac OS X(OS X)でキャプチャーされたウィンドウの影をなくしたい(切り抜きたい)というものです。

新しいOS Xだと影なしでキャプチャーできますが、それ以前は設定が必要だったり、また場合によっては白地や背景画像が含まれた状態になっていることがあります。そんなとき、今回のスクリプトを使うと簡単に切り抜き&保存ができます。


(function cutTransparent(){
// GUI部分
var winObj = new Window("dialog", "透明部分切り抜き", [0,0,320,270]);
var cropSize1 = winObj.add("radiobutton", [20, 10, 300, 25], "左上(40,25)から右下(-40, -55)で切り抜く");
var cropSize2 = winObj.add("radiobutton", [20, 30, 300, 45], "左上(5,2)から右下(-5, -7)で切り抜く");
var cropSize3 = winObj.add("radiobutton", [20, 50, 300, 65], "左上(57,35)から右下(-57, -79)で切り抜く");
var cropSize4 = winObj.add("radiobutton", [20, 70, 300, 85], "以下の座標で切り抜く");
winObj.add("statictext", [40, 100, 60, 120], "左");
winObj.add("statictext", [140, 100, 160, 120], "上");
winObj.add("statictext", [40, 130, 60, 150], "右");
winObj.add("statictext", [140, 130, 160, 150], "下");
var x1 = winObj.add("edittext", [60, 100, 100, 120], "67");
var y1 = winObj.add("edittext", [160, 100, 200, 120], "40");
var x2 = winObj.add("edittext", [60, 130, 100, 150], "67");
var y2 = winObj.add("edittext", [160, 130, 200, 150], "89");
var btnCrop = winObj.add("button", [20, 180, 300, 205], "切り抜く");
var btnSaveClose = winObj.add("button", [20, 210, 300, 235], "保存して閉じる");
var btnUndo = winObj.add("button", [20, 240, 300, 265], "切り抜きを取り消し");
// ボタンにイベントを割り当てる
btnCrop.onClick = function(){
var docW = activeDocument.width.value; // 横幅
var docH = activeDocument.height.value; // 縦幅
var cTop = null;
if(cropSize1.value== true){
var cTop = 25;
var cLeft = 40;
var cRight = docW - 40;
var cBottom = docH - 55;
}
if(cropSize2.value== true){
var cTop = 2;
var cLeft = 5;
var cRight = docW - 5;
var cBottom = docH - 7;
}
if(cropSize3.value== true){
var cTop = 35;
var cLeft = 57;
var cRight = docW - 57;
var cBottom = docH - 79;
}
if(cropSize4.value== true){
var cTop = parseInt(y1.text);
var cLeft = parseInt(x1.text);
var cRight = docW - parseInt(x2.text);
var cBottom = docH - parseInt(y2.text);
}
if (cTop != null){
activeDocument.crop([cLeft, cTop, cRight, cBottom]);
app.refresh();
}else{
alert("切り抜く種類を指定してください");
}
}
// 切り抜き後に保存して閉じる
btnSaveClose.onClick = function(){
activeDocument.close(SaveOptions.SAVECHANGES);
}
// 失敗したら元に戻せるようにするボタン
btnUndo.onClick = function(){
var idslct = charIDToTypeID( "slct" );
var desc7 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref3 = new ActionReference();
var idHstS = charIDToTypeID( "HstS" );
var idOrdn = charIDToTypeID( "Ordn" );
var idPrvs = charIDToTypeID( "Prvs" );
ref3.putEnumerated( idHstS, idOrdn, idPrvs );
desc7.putReference( idnull, ref3 );
executeAction( idslct, desc7, DialogModes.NO );
app.refresh();
}
winObj.center();
winObj.show();
})();


もし、切り抜きパターンをキーボードで手軽にやりたいのであれば、以下のスクリプトを作成し、PhotoshopのアプリケーションがあるフォルダのPresetsフォルダのScriptsフォルダに入れます。入れたらPhotoshopを起動します。

すると、ファイルメニューのスクリプトの一覧に作成したスクリプトが表示されます。あとは、アクションに設定すればできあがりです。

var docW = activeDocument.width.value; // 横幅
var docH = activeDocument.height.value; // 縦幅
var cTop = 25;
var cLeft = 40;
var cRight = docW - 40;
var cBottom = docH - 55;
activeDocument.crop([cLeft,cTop,cRight,cBottom]);


【古籏一浩】openspc@alpha.ocn.ne.jp
< http://www.openspc2.org/ >

Windows XPのサポートが終わったみたいですが、先週 Mac OS 9をインストールするという仕事(正確には仕事ではないけど)がありました。

今更 MacOS 9というのは事情があって、過去のデータ(15年ほど前のもの)を利用するため。PageMakerで作成したデータがあるため、MacOS 9が必要ということですが、結局 PageMakerが Mac OS Xのクラシック環境で動かず。もっと古いマシンを使わないと駄目だったのかも。IllustratorやPhotoshopは未だに現役だけど、PageMakerははるか昔に引退。都合によりInDesignへの移行も難しい。

別件で回収してきたデータはフロッピーディスク。さすがに、ドライブも売っているけど扱いが難しいメディアに。HTMLが一番残っていそうだけど、サーバー全滅したらほとんどのデータが消滅するというオチになりそう。集合知が突然消えたら、何もできずに無能になってしまうのか?

・4K/ハイビジョン映像素材集
< http://www.openspc2.org/HDTV/ >

・JavaScript逆引きハンドブック
< http://www.amazon.co.jp/dp/4863541082 >

・D3.js例文辞典
< http://www.openspc2.org/reibun/D3.js/ >

・Dart例文辞典
< http://www.openspc2.org/reibun/Dart/ver1.1/ >

・Adobe CS2〜CS6,CC JavaScriptリファレンス&ライブラリ
< http://www.openspc2.org/reibun/AdobeJS/index.html >

・Adobe JavaScriptリファレンス(検索できないのはKindleのバグらしい)
< http://www.amazon.co.jp/dp/4844395955 >

・Nexus 7(アンドロイドタブレット)使い方辞典
< http://www.openspc2.org/reibun/Android/Nexus7/ >

・クリエイター手抜きプロジェクト
< http://www.openspc2.org/projectX/ >

・Adobe Illustrator CS3 + JavaScript 自動化サンプル集
< https://www.ddc.co.jp/estore/cgi/item/start.cgi?m=DetailViewer&record_id=243 >
吉田印刷所の「印刷の泉」でも購入できるようになりました。