クリエイター手抜きプロジェクト[292]Adobe Photoshop CS3/CS4/CS5編 テキストファイル内の文字を調整して配置し連番PSDで保存する/古籏一浩

投稿:  著者:  読了時間:6分(本文:約2,600文字)


今回は、テキストファイルを読み込みDVDなど映像のテロップ(字幕)で使用する、PSDファイルを生成するスクリプトです。ただし、今回は文字が表示範囲(DVサイズなら720×480、FullHDサイズなら1920)を超えた場合、自動的に指定された範囲内に収まるように調整して保存します。

前回と同様、スクリプトの実行前には基本となるPhotoshopファイルを作成しておく必要があります。テキストはエリアテキストでなく、ポイントテキストにしてください。

以下のスクリプトを実行すると、順番に使用するファイルや保存先を聞いてきます。選択するファイルを間違えると動作しませんので注意してください。



// テキストファイル内の文字を720ピクセル以内に収まるように配置し連番ファイルで保存する
(function(){
var psdFile = File.openDialog("基本となるPSDファイルを選択してください","*.psd");
if (!psdFile){ return; } // キャンセルされたら何もしない
var textFile = File.openDialog("配置するテキストファイルを選択してください","*.txt");
if (!textFile){ return; } // キャンセルされたら何もしない
var saveFolder = Folder.selectDialog("保存先のフォルダを選択してください");
if (!saveFolder){ return; } // キャンセルされたら何もしない
var count = 0; // ファイル番号
var maxSize = 720; // 最大ピクセル数
// PSD形式保存オプション
psdOpt = new PhotoshopSaveOptions();
psdOpt.alphaChannels = true;
psdOpt.annotations = true;
psdOpt.embedColorProfile = true;
psdOpt.layers = true;
psdOpt.spotColors = true;
var flag = textFile.open("r");
if (!flag){
alert("ファイルが読み込めません");
return;
}
while(!textFile.eof){
app.open(psdFile);
var text = textFile.readln(); // 1行読み込む
var layObj = app.activeDocument.layers[0]; // 一番上のレイヤーを指定
layObj.textItem.contents = text;
var x1 = layObj.bounds[0].value;
var x2 = layObj.bounds[2].value;
var d = x2 - x1;
if (d >= maxSize){ // オーバーフローしている
layObj.textItem.horizontalScale = 100 * (maxSize / d);
}
var saveFile = new File(saveFolder.fullName+"/telop"+count+".psd"); // telop番号.psdという名前で保存する
activeDocument.saveAs(saveFile, psdOpt, true, Extension.LOWERCASE);
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
count++;
}
})();

DVサイズではなくFullHDサイズにする場合は、以下のように数値を変更してください。4Kサイズでも同様に、以下の行の数値さえ変更すれば対応させることができます。文字の間隔などもあるので、実際にはより小さい値を指定した方がよいでしょう。

var maxSize = 720; // 最大ピクセル数
 ↓
var maxSize = 1920; // 最大ピクセル数


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

3Dカメラに搭載されているICは4Kに対応したものが多いので、そのうち家庭用でも4Kカメラが出るのかな。と思ったら、iPhone 4Sのカメラが4KのICチップ内蔵したものでした。やっぱり時代はスマートフォンということみたい。昔、釣りゲームで争っていたモバゲーとグリー。ようやく勝負がついたみたい。買ったのはモバゲー(DeNA)。「横浜球団をつり上げた!」

・jQuery Mobile 1.0RC2例文辞典
< http://www.openspc2.org/reibun/jQuery_Mobile/1.0RC2/ >

・CSS3(スタイルシート Level 3)例文辞典
< http://www.openspc2.org/reibun/CSS3/ >

・改訂5版JavaScriptポケットリファレンス
< http://www.amazon.co.jp/dp/4774148199 >

・10日で覚えるHTML5入門教室
< http://www.amazon.co.jp/dp/4798124184 >

・毎度おなじみASCII.jpの連載
「第10回 JavaScriptで作れるiPhone用ボイスレコーダー」
< http://ascii.jp/elem/000/000/640/640963/ >

・iPhone/iPad × HTML5アプリ制作
< http://www.amazon.co.jp/dp/4797362618 >
< http://bookpub.jp/books/bp/196 >(電子書籍版。★セール期間は今週末まで!)

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

・Adobe Illustrator CS3 + JavaScript 自動化サンプル集
< http://www.openspc2.org/book/PDF/Adobe_Illustrator_CS3_JavaScript_Book/ >
吉田印刷所の「印刷の泉」でも購入できるようになりました。