2013-03-19 36 views
0

Iam試圖從XCode中的字符串中繪製TIFF圖像以將其顯示在擴展塢中。Cocoa - 從二進制字符串繪製圖像

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

,我得到的是這樣的字符串:

TIFF4D4D002A00041EB821585D22595E215.. 

我怎樣才能從這個二進制代碼繪製圖像 的TIFF圖像是通過與Spotify的相互作用一個AppleScript獲得?我當前的代碼(這是一個驗證的概念)是這樣的:

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

有什麼辦法來繪製MYIMAGE對象中的形象呢?

而且,有沒有更簡單的方法直接在我的Xcode項目中獲取這些信息,而不必依賴於AppleScript?

我的目標是創建一個簡單的應用程序,獲取當前正在播放的歌曲並將其顯示在專輯封面中。

我欣賞所有可能導致我接近答案的答案!

回答

1

這是與腳本橋接相當簡單

首先,在終端產生Spotify.h

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

然後,頭文件導入到項目中,然後鏈接到ScriptingBridge.framework

最後,抓住圖像並將其放入Dock中。這裏有一個基本的例子:

#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]; 
+0

我完全忘了這篇文章,但這正是我所做的,而且效果很棒!我沒有意識到ScriptingBridge,但蘋果文檔使我加快了速度。也許這是一件好事,我直到現在纔看到這篇文章,從閱讀文檔中學到了很多東西。非常感謝您的回覆,我會將您的標記標記爲解決方案! – 2013-03-26 01:07:21

-1

我不熟悉的Spotify的API,但是這樣的事情似乎將工作(你的字符串轉換爲NSData對象:

[[NSImage alloc] initWithData:] 
+0

我試圖調查一下,這是最有意義的。我退出閱讀文件,因爲我認爲我是「出路」。它可能會做到這一點。 Iam有點不確定如何使用NSData對象,但我會研究它!感謝您的回覆! – 2013-03-19 23:21:40

+1

我遇到了非常了不起的事情。 Apple腳本橋。長話短說,我似乎直接獲得了作爲NSImages的作品。我會盡快發佈答案。我一直在想念蘋果的一些優秀開發者的愛! – 2013-03-19 23:48:57