Domanda

Atrack è un ITReference * oggetto, il valore è un NSImage * oggetto, inizializzato tramite un URL di un jpeg.

[[[[[aTrack artworks] data_] set] to:value] send];

ottengo il seguente messaggio nel GDB:

2010-03-09 16:59:42.860 Sandbox[2260:a0f] Can't pack object of class NSImage (unsupported type): <NSImage 0x10054a440 Size={0, 0} Reps=(

Allora ho provato il seguente codice:

NSData *imageData = [[NSData alloc] initWithData:[value TIFFRepresentation]];
[[[[[aTrack artworks] data_] set] to:imageData] send];

e ottenere questo messaggio invece

2010-03-09 16:46:09.341 Sandbox[2193:a0f] Can't pack object of class NSConcreteData (unsupported type): <4d4d002a 00000000>

Nella documentazione AppScript, si dice che i "dati" di proprietà della voce "opere d'arte" è un'immagine PICTPicture.

Come faccio a convertire un NSImage ad un PICT? Sto usando l'AppScript tutto sbagliato?

È stato utile?

Soluzione

Appscript non colmare NSImage, in parte perché è NSImage AppKit e collegamenti appscript contro soltanto Fondazione; in parte perché questa zona di Apple Event utilizzo non è ben speccato. In teoria, AEDescs relative all'immagine dovrebbero contenere un blocco standard di dati bitmap, ma ISTR vari fastidi con intestazioni PICT quando si tratta di opere d'arte di iTunes. E 'disordinato.

NSData non è colmato perché imballaggio dati in un AEDesc senza un tipo descrittore significativo è in gran parte inutile. Se si vuole mettere in valigia un'istanza NSData, utilizzare +[NSAppleEventDescriptor descriptorWithDescriptorType:data:].

Anche prendere un'occhiata alla proprietà artwork della classe raw data. Questa è un'aggiunta posteriore e possono contenere dati di immagine in una forma più sensibile.

Oh, e dare un'occhiata al quadro EyeTunes; non è così flessibile ed efficiente come l'utilizzo di AppleScript / appscript, ma penso che include il codice per colmare NSImage a AEDescs.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top