Photoshop Extensionの開発28 フィルター作成

javascript, Photoshop

古い記事ですが古籏氏のPhotoshopのjavascriptでフィルターを作ろうという記事があってjavascriptでの画像処理のやり方がこちらに載っています

ただ記事を読めばわかるのですがjavascriptですと処理時間がかかりすぎて実用的なものにならないという結論に至っています。2009年の記事なので今ならjavascriptエンジンも改善されているのではと思う方もいるかもしれませんがjsxに関しては現状特にこれといって何も改善されていないので(未だにecma3ですよ)ピクセルを一つずつ操作する処理はなかなか難しそうです。以下記事を参考にしたもっと簡単なピクセル処理のコードです。40×40ピクセルのドキュメントに一ピクセルづつhsbカラーで塗りつぶしてゆく簡単なコードです。

とても簡単な処理ですがやはり30秒程度かかります(MacBook Pro 2.3GHzデュアルコアIntel Core i5 8GBメモリ 環境下)

Extension上なら新しいjavascriptエンジンが搭載されているという事でこれを利用すれば早くなるのでは?と考える方もいるかもしれませんが結局Photoshopと直接やりとりするスクリプトがjsxである以上なかなか難しいのが現状です。前回のようなファイル操作でしたらパネル上の処理で置き換えられますが。

このように一ピクセルづつ操作する事自体難しくてもランダムに円や四角形を生成するといった事でしたら許容範囲の処理時間でjavascriptでも処理できます。

こちらのスクリプトは1000ピクセルサイズのドキュメントにランダムな位置に円を50個生成します。

先ほどに比べてドキュメントサイズが1000とかなり大きくなっているにも関わらず処理速度は約30秒と早くもないですが極端に重くもありません。こういったピクセル単位の操作ではなく幾何形態の生成程度でしたらギリギリjavascriptでもフィルターらしきものが作れます。

最後にこれを応用して作ったExtension、imagingもあるのでよろしければ見てみてください。

Beer 寄付してサイトを応援する。