2011-03-14 115 views
4

我的目標是在視圖中顯示圖像。 考慮到我有一個:從NSData顯示NSImage

  • IBOutlet中NSImageView *用於顯示我的形象
  • 的NSData *爲imageData爲readig圖像文件圖像
  • NSImage中* ImageView的

imageData中存儲的圖像(我已經使用了initWithContentsOfFile方法)。

現在,如果我初始化的ImageView有:

NSImage *imageView = [[NSImage alloc] initWithContentsOfFile:path]; 

我可以正確地看到圖像的渲染,但這種方式我是從文件系統中讀取兩次。

如果我嘗試:

NSImage *imageView = [[NSImage alloc] initWithData:imageData]; 

顯示的圖像是非常small..like拇指

白衣CGImageRef:

CGImageSourceRef imageSource = CGImageSourceCreateWithData((CFDataRef)imageData, NULL); 
CGImageRef imageRef= CGImageSourceCreateImageAtIndex(imageSource, 0, nil); 
NSImage *imageView = [[NSImage alloc] initWithCGImage:imageRef size:NSZeroSize]; 

圖像仍呈現太小。

如何以原始分辨率顯示圖像?

+0

如果'initWithContentsOfFile:'適用於'NSImage',爲什麼還需要'NSData'? (但我同意這很奇怪 - 可能是一個圖像表示或大小問題。) – Richard 2011-03-14 13:51:39

+0

我已經編輯我的文章:添加imageSource – Matteo 2011-03-14 14:02:45

+0

我有一個NSData讀取exif標記。 – Matteo 2011-03-14 14:04:42

回答

5
NSImage *imageView = [[NSImage alloc] initWithData:(NSData *)imageData]; 
+0

感謝您的回覆。我會盡快嘗試,我會回饋你。 – Matteo 2011-10-07 08:33:39

+0

它適合你嗎? – 2011-10-30 02:29:18

+0

對不起,如果我遲到回覆你。當我將代碼粘貼到我的項目中時,編譯器會說出_error:語義問題:未知接收者'UIImage';如果我將UIImage更改爲CIImage,編譯器會說我_warning:語義問題:不兼容的指針類型用'CIImage *'類型的表達式初始化'NSImage *',如果我嘗試運行編譯器_Undefined符號體系結構x86_64:「_OBJC_CLASS _ $ _ CIImage」,引用來自:ButtonsAppDelegate.old中的objc-class-ref:未找到體系結構x86_64的符號clang:error:鏈接器命令失敗,退出代碼1_ – Matteo 2012-01-07 12:28:27