Archive for the 'Potoshop CC 2014' Category

2015/02/09 Photoshop Action Setをインストールする(ASOC)

PhotoshopのAction SetをインストールするAppleScriptのASOC版です。

AppleScript名:指定ファイルを指定Bundle IDのアプリでオープンする(ASOC)
– Created 2015-02-08 by Takaaki Naganoya
– 2015 Piyomaru Software
use AppleScript version “2.4″
use scripting additions
use framework “Foundation”
use framework “ASObjCExtras”
use framework “AppKit”

set a to (choose file)
openFileWithApp(a, “com.adobe.photoshop”)

on openFileWithApp(aFileAlias as alias, aBundleID as string)
  set aURL to current application’s SMSFord’s URLFrom:aFileAlias
  
set aURLarray to current application’s NSArray’s arrayWithObject:aURL
  
set sharedWS to current application’s NSWorkspace’s sharedWorkspace()
  
  
sharedWS’s openURLs:aURLarray withAppBundleIdentifier:aBundleID options:(current application’s NSWorkspaceLaunchDefault) additionalEventParamDescriptor:(missing value) launchIdentifiers:(missing value)
end openFileWithApp

★Click Here to Open This Script 

2015/02/08 Photoshop Action Setをインストールする

Photoshop Action SetをインストールするAppleScriptです。

・・・どこにもPhotoshopのコントロール部分がありませんが、これでいいんです。

Photoshopの自動化を行うにあたって、Script側に提供されている機能が決して多くはないため、Photoshop ActionでGUI上の操作を記録して、Actionを併用しつつScriptで処理するというスタイルが一般的です。つまり、Actionの有無や内容が期待した通りになっていることがたいへんに重要です。

以前に、海外の仕事で調査を行っていたときに、Photoshopがサポートしているファイルタイプ(=Photoshopがオープンできるファイルタイプ)に、Photoshop Action Setが存在していることに気づきました。

Photoshop Action Setはファイルに書き出すことができるのですが、これを各環境にインストールするあたりの操作を自動で行うことができずに、なかなかスマートな解決策がないもんだなぁ、と思っていました。

actionset.png

ところが、単にPhotoshop Action SetのファイルをPhotoshopのアプリケーションアイコンにドラッグ&ドロップすればPhotoshopにインストールできることがわかりました(盲点)。

そこで、その操作をAppleScriptで再現してみたら・・・問題なくインストールできました。アプリケーションバンドル中にPhotoshop Action Setのファイルを仕込んでおいて、Photoshop上に該当のAction Setが存在していなかったら、インストール・・・ということをやってみました。SandBox化したアプリ内でも実行できたので、割といい感じです。

Photoshop Actionの存在確認は(JavaScriptをまじえつつ)行えるので、存在していない場合にはAction Setを自動でインストールさせることが可能です。

AppleScript側で関知しないところでユーザーがAction Setの内容を改ざんするなどして、処理内容が維持できなくなる事態を防ぐべく、Action SetをScriptからインストール/アンインストールすることは重要です。

AppleScript名:Photoshop Actionをインストールする
set anActionFile to choose file with prompt “Choose Photoshop Action File”

tell application “Finder”
  set appFile to application file id “com.adobe.photoshop”
  
open anActionFile with appFile
end tell

★Click Here to Open This Script 

2014/10/06 最前面のQuickTimeムービーの現在のコマをコピーしてPhotoshopでJPEG保存

オープン中のQuickTimeムービーの現在のコマを静止画としてコピーして、PhotoshopでWeb用のJPEG(サイズが小さい)として書き出すAppleScriptです。

QuickTimeムービーの見どころだけをかいつまんでJPEGに書き出していたのですが、画面キャプチャをとったりなんだりで、3ステップぐらい手作業が必要だったので、いっぱつで実行できるようにAppleScriptを書いてみました。

各所にdelayを入れて時間待ちしているところがミソです。入れないとAppleScriptの実行が速すぎて、コピーなどの動作が完了しなかったためです。

また、QuickTime Player(X)の機能がおっそろしく少ないので、仕方なくGUI Scriptingを併用(現在のコマの内容をコピーする)しています。実行には、GUI Scriptingを許可しておく必要があります。

4d31d0bd-9459-478a-8fd5-f941a13f5453.jpg
▲ムービーから1コマだけ抜き出してPhotoshopでWeb用JPEG(サイズが小さい)に書き出した結果

スクリプト名:最前面のQuickTimeムービーの現在のコマをコピーしてPhotoshopでJPEG保存
set dPath to path to desktop
set dPathStr to dPath as string
set fPath to dPathStr & (do shell script “uuidgen”) & “.jpg”

–QuickTime書類の縦横ドットサイズを取得
tell application “QuickTime Player”
  
  
–ムービーを開いていないかチェック
  
set dCount to count every document
  
if dCount < 1 then
    display dialog “ムービーを開いた状態で実行してください” with icon 2 with title “エラー:書き出し対象のムービーが存在しません” buttons {“OK”} default button 1
    
return
  end if
  
  
tell document 1
    set {xWidth, yHeight} to natural dimensions
  end tell
  
end tell

–QuickTime Playerの書類の現在の位置の内容(静止画)をコピー
activate application “QuickTime Player”

delay 0.1

tell application “System Events”
  tell process “QuickTime Player”
    click menu item 5 of menu 1 of menu bar item 4 of menu bar 1 –編集>コピー
  end tell
end tell

delay 0.1

–Photoshopで新規書類を作成してペースト
tell application id “com.adobe.photoshop”
  activate
  
  
delay 0.1
  
  
make new document with properties {width:xWidth, height:yHeight}
  
paste
  
  
delay 0.1
  
  
–Resize & Save
  
tell current document
    
    
set aH to height
    
set aW to width
    
    
set aH1 to aH * 0.25
    
set aW1 to aW * 0.25
    
    
–resize image width aW1 height aH1
    
    
export in file fPath as save for web
    
    
close without saving
    
  end tell
  
  
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2014/08/25 Adobe Photoshopの巨大なバグ「日本語環境下でファイルオープンエラー」への対処

Adobe Creative Suites/Creative Cloudの巨大なバグは多々あれど、その中で最大にしてなかなか直らないものが、

「Photoshopは、日本語環境下でAppleScript経由のファイルのオープンがまともにできない」

というものです。

AppleとAdobeの間で問題のなすりつけ合いを行っていることは想像に難くありませんが、Photoshopでエラーの出るファイルを他のアプリでは問題なくオープンできていることから、明らかにAdobe側の問題です。

スクリプト名:Photoshopでファイルをオープンできないバグを簡単に再現するコード
set a to choose file

tell application id “com.adobe.photoshop”
  open a
end tell
–> error “Adobe Photoshop CC 2014 でエラーが起きました:ファイル 不特定のオブジェクト が見つかりませんでした。” number -43

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

本問題に対しては、浅いフォルダにファイルを配置(外部HDD上など)するとか、JavaScriptを経由してファイルオープンするとかいったさまざまな対策が行われてきました。

どの対処方法がよいのか、というのはいろいろ評価が分かれるところですが……大げさになりすぎないことから、「POSIX pathに変換してオープン」がけっこういいと思います。

ただしここで、一般的なアプリケーションでは「念のために」ファイルパス中にスペースキャラクターなどが入ることに備え、quoted form of でクォート処理を行うのが一般的ですが、ここでquoted form ofは使ってはいけません。エラーになってしまいます。

スクリプト名:Photoshopでファイルをオープンするために
set a to choose file

set aPosix to POSIX path of a

tell application id “com.adobe.photoshop”
  open file aPosix
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2014/06/19 Adobe Creative Cloud 2014がリリース

AdobeのCreative Cloudの各アプリが更新され、身近なところではAdobe Photoshop CC 2014、Adobe Illustrator CC 2014、Adobe InDesign CC 2014がリリースされました。

cc2014.png

主要なアプリケーションのバージョンアップの履歴や動向などを(勝手に想像して)まとめていますが、2014年はMicrosoft Officeもバージョンアップする見込みですし、FileMaker Proも小幅なバージョンアップをしてきそうですし、なかなか過渡期感がたっぷりです。

cc20142.png

今回のCC 2014のPhotoshop、Illustrator、InDesignのバージョンは上記のようになっています。アプリケーション名はそれぞれ「Adobe Photoshop CC 2014」「Adobe Illustrator CC 2014」「Adobe InDesign CC 2014」となっており、前バージョンと別にインストールされます(Gバイト級のアプリケーションが3つも増えて、SSDの空き容量が減ったので、CCの方を消しておきました)。

名前がとても長いのでbundle idで指定したほうが便利と思えるほどです。

cc20143.png

それぞれ、AppleScript用語辞書のバージョン間のdiffをとって確認していますが……

Photoshop:変更点なし。ASからファイルをオープンできないという伝統のバグが残っているかどうか?(確認しました。はい、あいかわらずです)
Illustrator:2箇所追加(preset settings dialog option、artwork)
InDesign:追加箇所たくさん

となっているようです。

InDesign CC 2014のCCからの変更点(追加点)について概要を調べてみたところ、

・Event Listener関連の機能拡張
・グループ化(階層化)されたSwatchの取扱いについての機能追加
・packageコマンドの属性追加
・epubプレビューアプリケーション(外部ヘルパーアプリケーション)の登録、確認、削除など
・data mergeでqrcode関連の機能にアクセスできるようになった(らしい)

といったところです。すべてサンプルコードまでチェックしたわけではないので概要のみ。階層化されたSwatchについてはけっこうしつこくコードを書いて確認しましたが、そもそもInDesign CC 2014に巨大なバグがあるので、作業が停まっていました。