クリエイター手抜きプロジェクト[511]Adobe Illustrator CS6〜CC 2017編 選択した四角形に画像位置とサイズを合わせる
── 古籏一浩 ──

投稿:  著者:



今回は、選択した四角形に画像位置とサイズを合わせる、Illustratorのスクリプトです。

最初のスクリプトは画像の縦横比に関係なく、画像を四角形にフィットされます。このスクリプトを実行する際はあらかじめ、画像と四角形を選択しておきます。また、画像は四角形より奥(背面)にしておいてください。





// 選択した四角形に画像位置とサイズを合わせる
(function (){
var selObj = app.activeDocument.selection;
if(selObj.length != 2){
alert("画像と四角形の2つだけを選択してください(奥に画像、手前に四角形)");
return;
}
var t = selObj[1].typename;
if ((t != "PlacedItem") && (t != "RasterItem") && (t != "GroupItem")){
alert("画像が四角形のパスの下(背面)になっていません。前後関係を正しく設定してから実行してください");
return;
}
// 座標値をもとに設定
var rect = selObj[0]; // 四角形
var imgObj = selObj[1]; // リンク画像
var rX1 = rect.geometricBounds[0];
var rY1 = rect.geometricBounds[1];
var rX2 = rect.geometricBounds[2];
var rY2 = rect.geometricBounds[3];
imgObj.left = rX1;
imgObj.top = rY1;
imgObj.width = rect.width;
imgObj.height = rect.height;
rect.remove();
})();


画像の縦横比も考慮したい場合は、以下のスクリプトになります。画像は必ず
四角形の中に収まるように処理されます。


// 選択した四角形に画像位置とサイズを縦横比を保ったまま合わせる
(function (){
var selObj = app.activeDocument.selection;
if(selObj.length != 2){
alert("画像と四角形の2つだけを選択してください(奥に画像、手前に四角形)");
return;
}
var t = selObj[1].typename;
if ((t != "PlacedItem") && (t != "RasterItem") && (t != "GroupItem")){
alert("画像が四角形のパスの下(背面)になっていません。前後関係を正しく設定してから実行してください");
return;
}
// 座標値をもとに設定
var rect = selObj[0]; // 四角形
var imgObj = selObj[1]; // リンク画像
var rX1 = rect.geometricBounds[0];
var rY1 = rect.geometricBounds[1];
var rX2 = rect.geometricBounds[2];
var rY2 = rect.geometricBounds[3];
imgObj.left = rX1;
imgObj.top = rY1;
// 横長の場合
if (imgObj.width > imgObj.height){ // 画像は横長
var r = rect.width / imgObj.width;
imgObj.width = rect.width;
imgObj.height = imgObj.height * r;
}else{ // 画像は縦長
var r = rect.height / imgObj.height;
imgObj.width = imgObj.width * r;
imgObj.height = rect.height;
}
rect.remove();
})();


次のスクリプトは、画像を四角形の長辺に合わせます。縦横比は保たれますが、画像は四角形の中に収まらないことがあります。


// 選択した四角形に画像位置とサイズを縦横比を保ったまま長辺に合わせる
(function (){
var selObj = app.activeDocument.selection;
if(selObj.length != 2){
alert("画像と四角形の2つだけを選択してください(奥に画像、手前に四角形)");
return;
}
var t = selObj[1].typename;
if ((t != "PlacedItem") && (t != "RasterItem") && (t != "GroupItem")){
alert("画像が四角形のパスの下(背面)になっていません。前後関係を正しく設定してから実行してください");
return;
}
// 座標値をもとに設定
var rect = selObj[0]; // 四角形
var imgObj = selObj[1]; // リンク画像
var rX1 = rect.geometricBounds[0];
var rY1 = rect.geometricBounds[1];
var rX2 = rect.geometricBounds[2];
var rY2 = rect.geometricBounds[3];
imgObj.left = rX1;
imgObj.top = rY1;
// 横長の場合
if (imgObj.width > imgObj.height){ // 画像は横長
var r = rect.height / imgObj.height;
imgObj.width = imgObj.width * r;
imgObj.height = rect.height;
}else{ // 画像は縦長
var r = rect.width / imgObj.width;
imgObj.width = rect.width;
imgObj.height = imgObj.height * r;
}
//rect.remove();
})();


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


IoT&教育と言えばラズベリーパイ。電源もない小型で安価なコンピューターです。前々から持っていたのですが、なぜか使ってなかったのでページを作りながら勉強中。やはり、売れるだけのことはあるなあ、というのが実感です。

・Raspberry Piを楽しもう
http://www.openspc2.org/reibun/RaspberryPI/


・InDesign JavaScript Reference
http://www.openspc2.org/reibun/InDesignCS6/ref/


・みんなのIchigoLatte入門 JavaScriptで楽しむゲーム作りと電子工作
https://www.amazon.co.jp/dp/4865940936

[正誤表]
http://www.openspc2.org/book/error/ichigoLatte/


・After Effects自動化サンプルプログラム 上巻、下巻
https://www.amazon.co.jp/dp/4844397591

https://www.amazon.co.jp/dp/4844397605


・IchigoLatteでIoT体験
https://www.amazon.co.jp/dp/B06X3X1CHP

http://digiconcart.com/dccartstore/cart/info/2561/218591


・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/


・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/


・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/


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


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