Pregunta

Atrack es un ITReference * objeto, valor es un objeto NSImage *, inicializado a través de una URL a un archivo JPEG.

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

Me sale el siguiente mensaje en 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=(

Entonces probé el siguiente código:

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

y obtenga este mensaje en lugar

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

En la documentación AppScript, se dice que los "datos" propiedad del elemento "obra" es una imagen de PICTPicture.

¿Cómo convierto un NSImage a un PICT? ¿Estoy usando la AppScript todo mal?

¿Fue útil?

Solución

Appscript no NSImage puente, en parte porque es NSImage AppKit y enlaces appscript contra solamente Fundación; en parte porque esta área de uso de eventos de Apple no está bien specced. En teoría, AEDescs relacionadas con la imagen debe contener un bloque estándar de los datos de mapa de bits, pero IstR varios problemas con los encabezados PICT cuando se trata de obras de arte de iTunes. Es complicado.

NSData no está puenteado porque embalaje datos en una AEDesc sin un tipo descriptor significativa es en gran medida inútil. Si desea empaquetar una instancia NSData, utilice +[NSAppleEventDescriptor descriptorWithDescriptorType:data:].

También echa un vistazo a la propiedad de la clase artwork raw data. Eso es una adición posterior y podría contener datos de imagen en una forma más sensata.

Ah, y echar un vistazo al marco EyeTunes; que no es tan flexible o eficiente como el uso de AppleScript / appscript, pero creo que incluye código para puentear NSImage a AEDescs.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top