« 時間が欲しいなぁ | トップページ | 銀粘土 - 13作品目/プレーンリング »

2011.12.03

画像を任意のサイズに自動変換する_PhotoShop

仕事で、「画像ファイルをリサイズしたいんんだけど、」と言った相談がありました。

詳しい内容を聞いてみると、「画像ファイルのサイズを必ず16pxの倍数にしたい。」とのことだった、
ファイルは、UIのパーツなので、数百点にも及ぶ可能性があることから、アクションを制作して、ドロップレット化したいと考えたが、どうにもカンバスサイズを16pxの倍数にすることがphoshop内では難しい。

例えば、

10*15のファイルだったら、16*16に、
17*10のファイルだったら、32*16にする訳だ。

さて、どうしたら良いものか?
開いているドキュメントのサイズを調べ、(X,Y)それぞれ16倍数か判断しなければならない。
そんなことがアクションでできるはずも無い。

考えあぐね、javaScriptを使うこととした。
Photoshop CS自動化作戦 with JavaScript

上記のような便利なサイトがあるので、幾つかのメソッドを組み合わせればできそう。
それで、以下のようなコードをこしらえてみた。


  1. preferences.rulerUnits = Units.PIXELS;
  2. rew = 0;
  3. reh = 0;
  4. w = activeDocument.width.value;
  5. h = activeDocument.height.value;
  6.  
  7. if(0!=(w%16)){
  8.     rew=w-(w%16)+16;
  9.     } else {
  10.         rew = w;
  11.         }
  12. if(0!=(h%16)){
  13.     reh=h-(h%16)+16;
  14.     } else {
  15.         reh = h;
  16.         }
  17.    
  18. activeDocument.resizeCanvas(rew,reh,AnchorPosition.TOPLEFT);


当初はwhile文なんか使って16を足す処理をしていたけど、画像ファイルのサイズが大きいと時間がかかるので、このような形にした、なお、実際に動かす環境は、windwsのphotoShop7であった。
上記のコードではphotoShop7では動かない。まず、拡張子がcsと違い“.js”でないとだめだった、
また、サイズを調べる「w = activeDocument.width.value;」の“.value”が使えないようで、
値“0”が帰ってきた。

対処として、“.value”を取った、「w = activeDocument.width;」で正しい値を取ることができた。


JavaScript 第5版 JavaScript 第5版

言語としてのJavaScriptについての詳しい解説はそのままに、最新のトピックを取り入れた本書はプログラマ必携の一冊です。

|

« 時間が欲しいなぁ | トップページ | 銀粘土 - 13作品目/プレーンリング »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/198455/53393933

この記事へのトラックバック一覧です: 画像を任意のサイズに自動変換する_PhotoShop:

« 時間が欲しいなぁ | トップページ | 銀粘土 - 13作品目/プレーンリング »