1

新しいシールドを上げてください。少し振りかけます。
私はPhotoshop CS4に、AppScript + Pythonを使用してフォルダいっぱいのJPEG画像を開こうとしています。これは、BASHで次のように記述できます。

#!/bin/bash
for F in `ls ~/Desktop/test`; do
    open -a "Adobe Photoshop CS4" $F
    # proceed to mutilate the image appearance
done

ls ~/Desktop/testステージで失敗しています。Finder にフォルダをリストしてもらい、その結果を一度に 1 つずつ Photoshop に送り込んで処理してもらいたいと思っています。
Adobe の ExtendScript ブリッジに相当する JavaScript は次のようになります。

#target photoshop
var folder = Folder("~/Desktop/test");
var images = folder.getFiles();
for (var i=0; i < images.length; i++) {
    if (images[i] instanceof File && images[i].hidden == false) {
        var doc = app.open(images[i]);
        // do something to the image here
        doc.close(SaveOptions.DONOTSAVECHANGES);
    }
}

document_fileのようなひどくばかげた仕掛けを備えたオブジェクトを取得できますx = app('Finder').home.folders['Desktop']().folders['test']().items()[0]が、それは本当にばかげたオブジェクトであることが判明しました。app('Adobe Photoshop CS4').open(x)このオブジェクトを試行するとOSERROR: 1230、がスローされますMESSAGE: File/Folder expected

(ええと、これdocument_fileは実際に に応答するためURL()File.makewithurl(x.URL())にフィードできますopen())

ええと、それを解決したので、 UNIXパスで指定された特定のフォルダー内のファイルのリストをFinderに要求することで、実際にこれを行う方法はありますか?

4

1 に答える 1

3

Photoshopのopenコマンドには、エイリアスオブジェクト(またはエイリアスオブジェクトのリスト)が必要です。

from appscript import *

folder = '/path/to/folder'

ps = app('Adobe Photoshop CS4')

for f in app('Finder').items[mactypes.Alias(folder)].files.get(resulttype=k.alias):
    ps.open(f)
    # do stuff here...
于 2009-12-15T19:36:02.757 に答える