C# で Photoshop を操作!
慧: こんにちは! 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 の起動、② ファイルを開く、③ アクションの実行、④ ファイルへ保存 という流れを C# のコードで記述するね。Photoshop のアクション は、操作を記録して必要な時に再利用できるマクロ機能のこと。
コードはこんな感じ。ファイルは絶対パスで指定しよう。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); // ファイルを閉じる | |
} | |
} | |
} |
コード中の DoAction メソッドで、アクションを実行しているよ。指定する値は、Photoshop のここの部分。
結果!
というわけで、メリークリスマス!
元の画像は、[Photoshop] 切手風のデザインを作る/プロ生ちゃんクリスマスカード の画像だよ。
参考になるサイト
今回の内容は、ほとんど Automating Photoshop With C# // Josh Wright を参考にしているの。
他にどんなことができるか調べるのは結構たいへんそう……。Adobe Photoshop Developer Center の Photoshop CC 2014 Scripting が、公式の最新情報かな。言語を英語にしないと情報が古いから気を付けて! コードの例は、AppleScript・JavaScript・VBScript が用意されているよ。
最新記事 by kei (全て見る)
- プロ生ちゃんチョコプログラミングコンテスト2024開催! - 2024/02/13
- HSP プログラムコンテスト2023 結果発表&プロ生ちゃん賞発表! #hsp3 - 2023/12/04
- プロ生ちゃんクリスマスプログラミングコンテスト2023開催! - 2023/12/04