0

連絡先のプロフィール写真をファイルに書き込みたいです。

1) TIFF 画像の読み方

ディクショナリは、イメージ プロパティを説明します。image (*TIFFPicture* or missing value) : Image for person.

辞書のTIFFPictureにはリンクがありますが、クリックしても追加情報はありません。それを読むと、値は のよう<>です。画像として読むにはどうすればいいですか?

2) TIFF 画像の書き方は?

ファイルに書き込む場合、どのような形式を指定すればよいですか? 辞書には次のように書かれています。[as: type class] : how to write the data: as text, data, list, etc.

as:画像の書き込みに必要な場合、どの型を指定すればよいですか? たとえば、使用するas: 'data'と、「型を変換できません」というエラーが表示されます。

例:

var app = Application.currentApplication();
app.includeStandardAdditions = true;

myPeople = Application("Contacts").people.whose({ _and: [{lastName: "Doe" },{firstName: "John"}] });

for (i in myPeople) {
    person = myPeople[i];

    if (person.image() == null) continue;

    var data = person.image();

    var file = Path("/var/tmp/test.tiff");

    app.openForAccess(file, { writePermission: true });
    app.setEof(file, {to:0} ); // reset length
    app.write(data, {
        to: file,
        //as: 'data',
    });

    app.closeAccess(file);

    // result: file with 2 bytes ("<>")
}
4

2 に答える 2

0

これは、Objective C ブリッジと AddressBook フレームワークを使用した JavaScript バージョンです。おまけ:PNGへの変換。

ObjC.import("AddressBook")
ObjC.import("AppKit")

person = $.ABAddressBook.addressBook.me
filename = $("~/Desktop/"+ person.displayName.js +".png").stringByExpandingTildeInPath.js

image = $.NSImage.alloc.initWithData(person.imageData)
imageData = $.NSBitmapImageRep.imageRepWithData(image.TIFFRepresentation)
png = imageData.representationUsingTypeProperties($.NSPNGFileType, $())
png.writeToFileAtomically(filename, false)  
于 2016-08-15T09:20:55.230 に答える
0

foo のアドバイスに従って、動作する AppleScript バージョンを次に示します。

tell application "Contacts"
    set {name:personName, image:personImage} to (get my card)
    set filePath to (((path to desktop folder) as text) & personName & ".tif")
    set theFile to open for access file filePath with write permission

    set eof of theFile to 0
    write personImage to theFile
    close access theFile
end tell

およびオートメーション用の同等の JavaScript (動作しない):

var app = Application.currentApplication()
app.includeStandardAdditions = true

var person = Application("Contacts").myCard()
var filePath = Path(app.pathTo("desktop") +"/"+ person.name() +".tif")
var theFile = app.openForAccess(filePath, { writePermission: true })

app.setEof(theFile, { to:0} )
app.write(person.image(), { to: theFile })
app.closeAccess(theFile)
于 2016-08-07T17:42:08.497 に答える