Photoshop Workspace Switcher

めったにPhotoshop絡みはやらないのですが、今回はPhotoshopCC2015用のエクステンションを作りました。まずは下記リンクを見てきて下さい。
https://youtu.be/OfoQqH9A0yw
これが機能の全てです。ワークスペースをツールごとに自動的に切り替える機能を提供するものです。
私たちがPhotoshopを使って日常的に行う作業というのは色々あるわけですが、それぞれの処理において利用する機能は全く異なったりします。たとえば、写真のレタッチを行う場合とテキストの編集作業では使うツールも違えば、必要となるパネル類も違ってくるわけです。そういった部分を最適化するために某社の各アプリケーションではワークスペースという概念が導入されています。で、いつも思っていたのですが、そこまで出来るならなぜ必要な時に必要なワークスペースに自動的に切り替えるようにしないのか?か???
で、先日からPhotoshopのPSEventAdapterの動作を確認していて、ああ…これできるわ…って思ったのでさらりと作ってみました。やっぱり自動的に切り替わると便利です。

続きを読む……


Adobe Generator

皆様、Generatorというものをご存知でしょうか? Generatorとは昨年のMAXにて発表されたPhotoshopの機能拡張の仕組みです。現行のPhotoshopはサーバーとして動作させるためにネットワーク上にポートを開放しており、リモート接続を行うことができます。この機能のおかげでタブレット等のアイテムをPhotoshopと連携させることが出来るようになりました。Generatorはこのサーバー機能にNODE.jsを利用して接続し各種コントロールを行おうというものです。
Generatorのコア自体はNODEで組み立てられたものですので、ユーザーがプラグインを作成する場合にはJavascriptでプログラミングをおこないます。そして、Generator自体はNODEのプロセスとなりますから起動にはターミナルからコマンドを実行する必要があります。しかしながら、NPM等の豊富なライブラリ類が利用できる事と、V8エンジン上で動作するといった大きなメリットも存在します。
ここから独り言なのですが……完全にCEPと被ってる……失礼しました、とりあえずセットアップから解説しましょう。

続きを読む……

Photoshopsdにおけるイベントの操作方法

前回のDeveiceCentralは完全にネタ記事でした。実用性があるかといえば微妙な代物です。zip圧縮を扱うのであれば、CEPエンジン経由でNODEを利用してNPMを利用するのが正当な流れです。まあ、CS6以前のワークフローでは活躍するかもしれませんが。
それはそうと、ぱげ始まったのですね。わたしも行ってみたいとは思いますが、そんな金と時間がどこにあるのでしょうorz。という事で平常営業なのですが、今回のネタはPhotoshopでのイベント管理です。他のアプリの様にeventListenerと記述したい所ですが、PSではこの様な記述はしません。代わりにnotifiersというクラスが存在します。ちょっと使いにくかったりしますがやってみます。

続きを読む……

EPSファイルの修復

先週ぼそぼそっとやっていたヤツの続きです。サルベージです。ある特定の方は頭の「サル」に反応します。ピポっ…古いです。まあそんなのはどうでも良い事です。データ拾います。でも壊れています。今回のはEPSファイルです。
まあ、良くある話です。数年前のMOとかから取り出そうとすると良く見受けます。色々とディスク修復作業をやった挙げ句読み出したデータが壊れていたとか、全く笑えないわけです。でも、嘆いてばかりではいられません。前へ進む為には血の滲む様な努力が必要な場合もあります。さあ、みなさん、わたしの屍を乗り越えて前へと進んで下さい。

続きを読む……



PhotoshopとJavascriptとClipboardと…

最近のPhotoshopはJavascriptからダイレクトにクリップボードをフック出来るというおはなし。しかし、未だに謎が多いのですが一応メモしておきます。
元ネタは

http://stackoverflow.com/questions/4066108/photoshop-jsx-how-do-i-copy-arbitrary-text-to-the-clipboard

です。

function copyTextToClipboard(txt){
     
var txd=app.charIDToTypeID(‘TxtD’);
     
var kttc = app.stringIDToTypeID( “textToClipboard” );
     
var ad = new ActionDescriptor();
     
ad.putString( txd, txt );
     
executeAction( kttc, ad, DialogModes.NO );
     
}

このコードは引数をクリップボードに格納するコードです。良くわからないのは逆で、クリップボードから取り出す場合なのですが、TypeIDとかcharIDとかがはっきりしない上、ScriptingListenerのログとってもクリップボードの内容は3重にクォートされたリテラル状態で鎮座していらっしゃるから困ったものです。
どなたか分かる方いませんか〜???

続きを読む……