このページの本文へ

前へ 1 2 3 4 次へ

  • twitterでつぶやく
  • はてなブックマークに登録
  • del.icio.usに登録
  • livedoorクリップに登録
  • Buzzurlに登録
  • StumbleUponに登録
  • Google Bookmarksに登録
  • Facebookでシェア
  • Yahoo!ブックマークに登録
  • お気に入りに登録
  • 本文印刷

古籏一浩のJavaScriptラボ ― 第24回

JavaScriptでRSSからPhotoshop画像を生成!

2010年02月03日 11時00分更新

文● 古籏一浩


記事のタイトルをJPEGファイルとして保存

 さまざまな画像フォーマットを扱えるPhotoshopは、スクリプトでも多数のファイル形式から保存形式を選べます。JPEG画像として保存する場合、new JPEGSaveOptions()を使ってJPEG保存オブジェクトを作成しておき、このオブジェクトの各プロパティに画質やプログレッシブかどうかなどを設定していきます。設定部分は以下のようになります。


jpegOpt = new JPEGSaveOptions();
jpegOpt.embedColorProfile = true;
jpegOpt.quality = 8;
jpegOpt.formatOptions = FormatOptions.PROGRESSIVE;
jpegOpt.scans = 3;
jpegOpt.matte = MatteType.NONE;


 embedColorProfileは、カラープロファイルを埋め込むかどうかの指定です。trueを指定するとカラープロファイルが埋め込まれます。qualityは画質で値が大きいほど劣化しなくなり高画質になります(0~12まで指定することができ、0が低品質・高圧縮率、12が高品質・低圧縮率)。

 プログレッシブかどうかはformatOptionsで指定します。プログレッシブの場合、scansでスキャンラインの値を指定できます。matteはマットタイプでMatteType.NONEを指定するとマットなしになります。いずれもJPEG保存ダイアログで指定できるものですので、ダイアログに表示されるものと見比べてみると分かりやすいでしょう。

 実際に保存するにはsaveAs()を使って以下のように記述します。


activeDocument.saveAs(savefileObj, jpegOpt, true, Extension.LOWERCASE)


 最初の引数がファイルオブジェクト(保存先)、2番目が保存オプションを格納したオブジェクト(今回はJPEG)、3番目は複製を作成するかどうか、4番目は拡張子を小文字にするかどうかです。

 これで無事にRSSの記事のタイトルがJPEG画像として保存できました。が、何度もBridge Talkを使って呼び出していると、次々と新規ドキュメントが作成されてしまい、動作速度が低下してしまいます。そこでJPEGファイルとして画像を保存したら、Photoshopドキュメントを破棄して閉じるようにしましょう。

 ドキュメントを保存せずに閉じるには以下のようにします。確認のダイアログは表示されず、すぐにドキュメントが閉じられます。


activeDocument.close(SaveOptions.DONOTSAVECHANGES)


 最後に、Bridge Talkに結果を知らせるためにapp.bodyにメッセージとなる文字列を入れておきましょう。Bridge側ではPhotoshopから受け取ったメッセージをダイアログに表示して処理を終了させます。

 これらをまとめたものがサンプル06、サンプル07です。時間はかかりましたが、順を追って見てもらえば処理手順が分かるかと思います。

処理が完了するとダイアログが表示されます
処理が完了するとダイアログが表示されます
記事の最初のタイトルがJPEG画像データとして保存されています
記事の最初のタイトルがJPEG画像データとして保存されています

●サンプル06


#target "Bridge"
var bt = new BridgeTalk();
bt.target = "Photoshop";
var fileObj = new File("~/ps_text.jsx");
var flag = fileObj.open("r");
if (flag){
    bt.body = fileObj.read();
}
bt.onResult = function(returnBtObj){ 
    alert(returnBtObj.body);
}
bt.send();


●サンプル07


preferences.rulerUnits = Units.PIXELS;
var fileObj = new File("~/rss_title.txt");
if (fileObj.open("r") == true){
    var text = fileObj.readln();
    fileObj.close();
    app.documents.add(520,30);
    var lay = activeDocument.artLayers.add(); // レイヤーを追加
    lay.kind = LayerKind.TEXT;
    lay.textItem.font = "Osaka";
    lay.textItem.size = 11;
    lay.textItem.contents = text;
    lay.translate(0, 18);
    var savefileObj = new File("~/rss_title.jpg");
    jpegOpt = new JPEGSaveOptions();
    jpegOpt.embedColorProfile = true;
    jpegOpt.quality = 8;
    jpegOpt.formatOptions = FormatOptions.PROGRESSIVE;
    jpegOpt.scans = 3;
    jpegOpt.matte = MatteType.NONE;
    activeDocument.saveAs(savefileObj, jpegOpt, true, Extension.LOWERCASE);
    activeDocument.close(SaveOptions.DONOTSAVECHANGES);
    app.body="Photoshopでの処理は完了しました";
}else{
    alert("ファイルが開けません");
    app.body="NG";
}



 前回作成した、WebサーバーからRSSデータを読み込む処理と組み合わせると、ダブルクリックで自動的に記事のタイトルからJPEG画像を生成するスクリプトになります。次回は、今回生成したJPEG画像をサーバーにFTPを使って転送するスクリプトにチャレンジします。BridgeにはFTP機能もあるので、他のアプリケーションを使わずにアップロード処理まで自動化できます。

 それでは、また次回。

前へ 1 2 3 4 次へ

カテゴリートップへ

この連載の記事

ASCII.jp会員サービス 週刊Web Professional登録

Webディレクター江口明日香が行く

みんなが買ってる最新アイテムはコレだ!

Microsoft Windows 7 Home Premium 通常版 Service Pack 1 適用済み

iPhone 4S/4 防指紋性・高光沢機能性フィルム PRO GUARD AF for iPhone 4S/4 / PGAF-IPH4

iPhone 4S/4 防指紋性・高光沢機能性フィルム PRO GUARD AF for iPhone 4S/4 / PGAF-IPH4

マイクロソリューション Micro Solution Inc.

83人が購入

BenQ 24型 LCDワイドモニタ XL2420T

BenQ 24型 LCDワイドモニタ XL2420T

ベンキュージャパン

37,238円〜

3人が購入

jQuery Mobile スマートフォンサイト デザイン入門 (WEB PROFESSIONAL)

jQuery Mobile スマートフォンサイト デザイン入門 (WEB PROFESSIONAL)

アスキー・メディアワークス

2,499円〜

20人が購入

メモリーカード 32GB (PCH-Z321J)

メモリーカード 32GB (PCH-Z321J)

ソニー・コンピュータエンタテインメント

7,772円〜

6人が購入

Amazon.co.jp