【问题标题】:How do I add artwork to an iTunes track with obj-c AppScript?如何使用 objc App Script 将艺术作品添加到 iTunes 曲目?
【发布时间】:2010-03-10 01:15:25
【问题描述】:

aTrack 是一个 ITReference* 对象,value 是一个 NSImage* 对象,通过 URL 初始化为 jpeg。

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

我在 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=(

然后我尝试了以下代码:

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

并改为获取此消息

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

在 AppScript 文档中,它说“艺术品”项的“数据”属性是一个 PICTPicture 图像。

如何将 NSImage 转换为 PICT?难道我用的 AppScript 都错了吗?

【问题讨论】:

    标签: cocoa itunes nsimage sourceforge-appscript


    【解决方案1】:

    Appscript 不会桥接 NSImage,部分原因是 NSImage 是 AppKit,而 appscript 仅与 Foundation 链接;部分原因是苹果事件使用的这个领域没有很好的规范。理论上,与图像相关的 AEDescs 应该包含一个标准的位图数据块,但在处理 iTunes 艺术品时,ISTR 会遇到 PICT 标头的各种麻烦。很乱。

    NSData 没有被桥接,因为在没有有意义的描述符类型的情况下将数据打包到 AEDesc 中在很大程度上是没有意义的。如果要打包 NSData 实例,请使用+[NSAppleEventDescriptor descriptorWithDescriptorType:data:]

    还可以查看artwork 类的raw data 属性。这是后来添加的,可能包含更合理形式的图像数据。

    哦,看看 EyeTunes 框架;它不如使用 AppleScript/appscript 灵活或高效,但我认为它包含将 NSImage 桥接到 AEDescs 的代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-13
      • 2011-10-25
      • 1970-01-01
      • 2019-09-24
      • 2019-07-04
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多