cocoa - 如何使用 obj-c AppScript 将图稿添加到 iTunes 轨道?

标签 cocoa itunes nsimage sourceforge-appscript

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

[[[[[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 文档中,它说“artwork”项的“data”属性是 PICTPicture 图像。

如何将 NSImage 转换为 PICT?我使用 AppScript 是否完全错误?

最佳答案

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

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

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

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

关于cocoa - 如何使用 obj-c AppScript 将图稿添加到 iTunes 轨道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2413861/

相关文章:

objective-c - 通过 Objective-c 中的绑定(bind)在 NSComboBoxCell 上自动完成

objective-c - 关于 Cocoa C 风格函数的一些愚蠢问题

objective-c - 任何 NSImage 的棕褐色版本

objective-c - 如何获取用户 Mac 的图标?

objective-c - 基于单元格的 NSTableView 的工具提示

swift - 在菜单栏子菜单中列出所有已安装的卷(仅以编程方式)

java - 搜索特定节点后的第一个匹配元素(XPath 和 iTunes XML)

ios - "Restore Transactions"无可恢复时的按钮行为

Objective-c - 获取图像中最少使用和最多使用的颜色

macos - 从 View 、字符串等创建图像