C# で Photoshop を操作!

Photoshop,Pronama-chan

慧: こんにちは! C# Advent Calendar 2014 の24日目の記事だよ。

今日は思い付きだけど C# で Photoshop を操作するよ! アドベントカレンダー登録したときは、#キャラサミ のキャラクター一覧 の作り方にしようかなと思ってたんだけどね。

Photoshop オートメーション

Photoshop は「OLE オートメーション」というのに対応してて、C# でなくても、いろんな言語から操作できるようになってるんだよね。今回はこれをちょっと使ってみるよ。

Photoshop Object Library を参照

Visual Studio で C# のプロジェクトを作成して、「参照の追加」で「COM」の「Adobe Photoshop (version) Object Library」を選択。「(version)」部分はインストールしている Photoshop によって違うよ。

photoshop-automation-1

アクションの実行をコードで記述

① Photoshop の起動、② ファイルを開く、③ アクションの実行、④ ファイルへ保存 という流れを C# のコードで記述するね。Photoshop のアクション は、操作を記録して必要な時に再利用できるマクロ機能のこと。

コードはこんな感じ。ファイルは絶対パスで指定しよう。


using Photoshop;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var app = new Application(); // Photoshop 起動
var doc = app.Open(@"C:\Users\kureikei\Pictures\xmascard2014.jpg"); // ファイルを開く
app.DoAction("セピアトーン (レイヤー)", "初期設定のアクション"); // アクションの実行
var options = new JPEGSaveOptions() { Quality = 10 }; // JPEG 保存オプション (品質 0-12; default: 3)
doc.SaveAs(@"C:\Users\kureikei\Pictures\xmascard2014_sepia.jpg", options, true, PsExtensionType.psLowercase); // ファイルへ保存
doc.Close(PsSaveOptions.psDoNotSaveChanges); // ファイルを閉じる
}
}
}

view raw

photoshop.cs

hosted with ❤ by GitHub

コード中の DoAction メソッドで、アクションを実行しているよ。指定する値は、Photoshop のここの部分。

photoshop-automation-2

結果!

というわけで、メリークリスマス!

xmascard2014_sepia

元の画像は、[Photoshop] 切手風のデザインを作る/プロ生ちゃんクリスマスカード の画像だよ。

参考になるサイト

今回の内容は、ほとんど Automating Photoshop With C# // Josh Wright を参考にしているの。

他にどんなことができるか調べるのは結構たいへんそう……。Adobe Photoshop Developer CenterPhotoshop CC 2014 Scripting が、公式の最新情報かな。言語を英語にしないと情報が古いから気を付けて! コードの例は、AppleScript・JavaScript・VBScript が用意されているよ。

The following two tabs change content below.
都内の公立高校に通う高校生。部活は、情報処理研究会。身体を動かすのも好きで、気が向いたときはなぜか体育会系の部活に混ぜてもらっていろんなスポーツをすることも。プログラミング生放送のキャラクターとして活動中!

Photoshop,Pronama-chan

Posted by kei