クリエイター手抜きプロジェクト[256]Illustrator CS4/CS5編 複数のアートボードに画像を連続配置(3)
── 古籏一浩 ──

投稿:  著者:


アートボードネタは今回で最後です。最初のスクリプトは前回同様、選択したフォルダ内にあるJPEG画像を配置します。配置する際に、アートボードの中央に画像を移動させます。配置してセンタリングする、ということです。

また、JPEG画像ではなくPNG画像にしたい場合には
「var fileList = folderObj.getFiles("*.jpg");」を
「var fileList = folderObj.getFiles("*.png");」のように拡張子を変更してください。



(function(){
var abNum = 100; // 100ページ
var pageW = 595.28; // A4サイズ横幅
var pageH = 841.89; // A4サイズ縦幅
var docObj = app.documents.add(
DocumentColorSpace.RGB,
pageW, // A4サイズ
pageH,
abNum,
DocumentArtboardLayout.GridByRow, // 左から右、上から下
0, // アートボード間の余白
10 // アートボードサイズの平方根。Math.SQRT(abNum)
);
var folderObj = Folder.selectDialog("配置するJPEG画像があるフォルダを選択してください");
var fileList = folderObj.getFiles("*.jpg");
var num = fileList.length;
if (num > 100) num = 100; // 100枚以上は配置しない
var X = 0;
var Y = pageH * 10;
for(var i=0; i< num; i++){
setImage(fileList[i], X, Y);
X = X + pageW;
if (X > pageW*9) { // 10*10なので10枚を超えたら下のアートボードへ
X = 0;
Y = Y - pageH;
}
}
// 指定した位置に画像を配置
function setImage(fileObj, x, y){
var myImage = app.activeDocument.placedItems.add();
myImage.file = fileObj;
myImage.left = x;
myImage.top = y;
if (myImage.width > pageW){ // ページの横幅よりはみ出している場合
var d = pageW / myImage.width;
myImage.width = myImage.width * d;
myImage.height = myImage.height * d;
}
if (myImage.height > pageH){ // ページの縦幅よりはみ出している場合
var d = pageH / myImage.height;
myImage.width = myImage.width * d;
myImage.height = myImage.height * d;
}
var tx = (pageW - myImage.width) / 2;
var ty = (pageH - myImage.height) / 2;
myImage.translate(tx, -ty);
myImage.embed();
}
})();


画像カタログとして利用したい場合には、ファイル名も表示しないと役に立ちません。ファイル名も追加して配置する場合には、以下のスクリプトを使ってください。ファイル名の位置は
「txtObj.translate(X+20, Y - 40); // 文字の表示位置」の20と40の値を調整することで変更できます。


(function(){
var abNum = 100; // 100ページ
var pageW = 595.28; // A4サイズ横幅
var pageH = 841.89; // A4サイズ縦幅
var docObj = app.documents.add(
DocumentColorSpace.RGB,
pageW, // A4サイズ
pageH,
abNum,
DocumentArtboardLayout.GridByRow, // 左から右、上から下
0, // アートボード間の余白
10 // アートボードサイズの平方根。Math.SQRT(abNum)
);
var folderObj = Folder.selectDialog("配置するJPEG画像があるフォルダを選択してください");
var fileList = folderObj.getFiles("*.jpg");
var num = fileList.length;
if (num > 100) num = 100; // 100枚以上は配置しない
var X = 0;
var Y = pageH * 10;
for(var i=0; i< num; i++){
setImage(fileList[i], X, Y);
var txtObj = app.activeDocument.textFrames.add();
txtObj.contents = File.decode(fileList[i].name);
txtObj.translate(X+20, Y - 40); // 文字の表示位置
X = X + pageW;
if (X > pageW*9) { // 10*10なので10枚を超えたら下のアートボードへ
X = 0;
Y = Y - pageH;
}
}
// 指定した位置に画像を配置
function setImage(fileObj, x, y){
var myImage = app.activeDocument.placedItems.add();
myImage.file = fileObj;
myImage.left = x;
myImage.top = y;
if (myImage.width > pageW){ // ページの横幅よりはみ出している場合
var d = pageW / myImage.width;
myImage.width = myImage.width * d;
myImage.height = myImage.height * d;
}
if (myImage.height > pageH){ // ページの縦幅よりはみ出している場合
var d = pageH / myImage.height;
myImage.width = myImage.width * d;
myImage.height = myImage.height * d;
}
var tx = (pageW - myImage.width) / 2;
var ty = (pageH - myImage.height) / 2;
myImage.translate(tx, -ty);
myImage.embed();
}
})();


また、埋め込み画像ではなくリンクタイプの画像にしたい場合には「myImage.embed();」の行を削除してください。


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

最近はHDDの容量が2TBで止まってましたが、やっと3TB HDDが登場。Mac miniサーバーには2TB HDD×4台を接続してますが、データが入りきらずに四苦八苦。3TB HDDより大きい容量のHDDが出て来れば、映像データも1台か2台で全部入りそうです。

・大容量 3TB HDD:Western Digital - WD30EZRSDTL
< http://www.wdc.com/jp/products/products.asp?DriveID=866
>

・『HTML5技術動向調査報告書2011』【11/2発売】
  -次世代ウェブを創る標準技術の全容とベンダーの取り組み-
< http://www.impressrd.jp/news/101028/HTML5
>

・プロならば知っておくべきWebコーディング&デザインの定石100【発売中】
< http://www.amazon.co.jp/dp/4844361538
>

・Google API Expertが解説するHTML5ガイドブック【発売中】
< http://www.amazon.co.jp/dp/4844329278
>

・逆引きGoogle Maps APIリファレンス ver 3
< http://www.openspc2.org/reibun/Google/Maps/API/ver3/
>

・ハイビジョン映像素材集(全部Mac miniサーバーに映像データを移しました)
< http://www.openspc2.org/HDTV/
>

・Adobe Illustrator CS3 + JavaScript 自動化サンプル集 発売中
< http://www.openspc2.org/book/PDF/Adobe_Illustrator_CS3_JavaScript_Book/
>

毎度おなじみASCII.jpの連載もよろしく
・Firefoxでソフトシンセも作れるAudio Data APIの使い方
< http://ascii.jp/elem/000/000/564/564098/
>