スキップメニュー:コンテンツへナビゲーションへ

乱雑モックアップ   らんざつ[乱雑] (名・形動)[文]ナリ 入り乱れていること。乱れていて秩序がないこと。また、そのさま。

大量のテクスチャー画像を、超簡単にパターン登録する.jsx ( バッチ処理不使用

以前作ったjsxは ( Fireworksのテクスチャー画像等をPhotoshopのパターンに一括登録したい )

  1. .jsxをアクションに登録して
  2. [ファイル] – [自動処理] – [バッチ] から登録したアクションを指定

といった手順を踏む必要があったけれど今回のはバッチ処理なしでいけるはず、多分。
WindowsXPのCS3では大丈夫だった。

どういったモノ?

パターンに画像を、ファイル名で登録するだけ。
大量に登録したい時に威力を発揮するはず。

例えばこうゆう.patではないパターン画像を超簡単に一気に登録できる。
patterns: set no.7 by ~77words on deviantART

使い方

[ファイル] – [スクリプト] – [参照] から下からダウンロードしたjsxを選択する。
(xpの場合) C:\Program Files\Adobe\Adobe Photoshop CS3\プリセット\スクリプト の中に.jsxを入れておけば[ファイル] – [スクリプト] から使用できる。

ExtendScript Toolkitからも使える。

ダウンロード

// ==========
// File Name: addPattern.jsx
// File URI: http://sakurachiro.com/_exercise/javascript/jsx/addPattern.jsx
// Description: 画像をパターンに一括登録する
// Author: makoto
// Version: 1.0.0
// Author URI: http://blog.sakurachiro.com/
// Copyright: Copyright 2010 makoto
// ==========

textureFolderObj = Folder.selectDialog("パターンに登録したい画像があるフォルダを選択してください");
if (textureFolderObj) {
  fileSet(textureFolderObj);
}

function fileSet(textureFolderObj) {
  var textureFileList = textureFolderObj.getFiles();
  for (var i = 0; i < textureFileList.length; i++) {
    var textureFileObj = textureFileList[i];
    if (textureFileObj.name.indexOf(".") < 0) {
      //拡張子がなければフォルダと判断
      fileSet(textureFileObj);
    } else if (textureFileObj.name.match(/.png|.jpg|.jpeg|.gif/g)) {
      //正規表現に自信はないけど動いているようだ
      addTexture(textureFileObj);
    }
  }
}

function addTexture(textureFileObj) {
	open(new File(textureFileObj));

  // ==========
  // 登録する
  // ==========
  var idMk = charIDToTypeID("Mk  ");
  var desc1 = new ActionDescriptor();
  var idNull = charIDToTypeID("null");
  var ref1 = new ActionReference();
  var myPtrn = charIDToTypeID("Ptrn");
  ref1.putClass(myPtrn);
  desc1.putReference(idNull, ref1);
  var idUsng = charIDToTypeID("Usng");
  var ref2 = new ActionReference();
  var idPrpr = charIDToTypeID("Prpr");
  var idFsel = charIDToTypeID("fsel");
  ref2.putProperty(idPrpr, idFsel);
  var idDcmn = charIDToTypeID("Dcmn");
  var idOrdn = charIDToTypeID("Ordn");
  var idTrgt = charIDToTypeID("Trgt");
  ref2.putEnumerated(idDcmn, idOrdn, idTrgt);
  desc1.putReference(idUsng, ref2);
  var idNm = charIDToTypeID("Nm  ");
  var docName = app.activeDocument.name;
  desc1.putString(idNm, docName);
  executeAction(idMk, desc1, DialogModes.NO);

  // ==========
  // 閉じる
  // ==========
  var idCls = charIDToTypeID("Cls ");
  executeAction(idCls, undefined, DialogModes.NO);
}

今回詰まったところ

バッチにある「サブフォルダをすべて含める」をjsxでどうやって書いていいのかがさっぱりだった。

こんな風に書いて、

var myFolder = Folder.selectDialog("フォルダを選択");
var myFiles = myFolder.getFiles();
for(i=0;i<myFiles.length;i++){
 alert(myFiles.length);
}

下記画像ような中身のフォルダを選択すると、困った事にmyFiles.lengthは7になる。
選択したフォルダの中身の例

そんな時とても参考になったページ

IllustratorとPhotoshopのファイル名埋め込み
IllustratorとPhotoshopのファイル名埋め込み – for iPhone

ExtendScript Toolkitを使ってみたんだけど
ちゃんと書けていたのに「対象アプリケーションを選択」でPhotoshopを選んでいなかった為、いつまでもopenが関数ではありません等のエラーが出て動かず途方に暮れた。
ExtendScript Toolkit 2、対象アプリケーションを選択
ちゃんとadobe photoshop cs3を選択しなければ。


2件のコメント »

  1. [...] のを公開した。 Photoshopにテクスチャ画像等を一括でパターン登録する.jsx ( バッチ処理不使用 « 乱雑モックアップ [...]

    ピンバック by Fireworksのテクスチャー画像等をPhotoshopのパターンに一括登録したい。 « 乱雑モックアップ — 2010年5月23日 @ 22:10

  2. Add pattern 2.. Ho-o-o-o-t :)

    コメント by blog.sakurachiro.com — 2011年6月3日 @ 01:58

この投稿へのコメントの RSS フィード。 TrackBack URL

コメントする

You can add images to your comment by clicking here.




Back to Top↑

あわせて読みたい

Back to Top↑

RSS 乱雑モックアップのフィード

Copyright © 乱雑モックアップ. All Rights Reserved.