Какао - рисовать изображение из двоичной строки

Я пытаюсь нарисовать изображение TIFF из строки в XCode, чтобы отобразить его в доке. TIFF-изображение получается через AppleScript, который взаимодействует с Spotify:

tell application "Spotify"
set aTrackArtwork to artwork of current track
end tell

Строка, которую я получаю, выглядит примерно так:

TIFF4D4D002A00041EB821585D22595E215..

Как я могу нарисовать изображение из этого двоичного кода? Мой текущий код (который является проверкой концепции) выглядит так:

NSImage *myImage = [[NSImage alloc] init];
myImage = [NSImage imageNamed:@"ikoner"];
[NSApp setApplicationIconImage:myImage];

Есть ли способ нарисовать изображение внутри объекта myImage?

И есть ли какой-нибудь более простой способ получить эту информацию непосредственно в моем проекте XCode без необходимости полагаться на appleScript?

Моя цель - создать простое приложение, которое получает текущую воспроизводимую песню и отображает обложку альбома в доке.

Я ценю все ответы, которые могут или не могут привести меня ближе к ответу!

2 ответа

Решение

Это довольно просто с помощью скриптового моста.

Во-первых, генерировать Spotify.h в Терминале:

sdef /Applications/Spotify.app | sdp -fh --basename Spotify

Затем импортируйте файл заголовка в свой проект, затем ссылку на ScriptingBridge.framework,

Наконец, возьмите изображение и поместите его в док. Вот основной пример:

#import "Spotify.h"

// Get the image from Spotify
SpotifyApplication *spotify = [SBApplication applicationWithBundleIdentifier:@"com.spotify.client"];
NSImage *coverArt = spotify.currentTrack.artwork;

// Create an image view and put it in the Dock
NSImageView *imageView = [[NSImageView alloc] initWithFrame:NSZeroRect];
imageView.image = coverArt;

NSDockTile *dock = [[NSApplication sharedApplication] dockTile];
dock.contentView = imageView;
[dock display];

Я не знаком с API Spotify, однако что-то вроде этого, похоже, будет работать (преобразовать вашу строку в объект NSData:

[[NSImage alloc] initWithData:]
Другие вопросы по тегам