2013-06-30 81 views
6

我正在玩Core Image Framework。據我所知,如果我有一個圖像(NSImage),它首先需要轉換爲CIImage。我可以做到這一點。將CIImage轉換爲NSImage

NSImage *im1 = [[NSImage alloc] initWithContentsOfFile:imagepath]; 
NSRect rect1;rect1.size.width = img1.size.width; rect1.size.height = img1.size.height; 
CGImageRef imageRef1 = [img1 CGImageForProposedRect:&rect1 context:[NSGraphicsContext currentContext] hints:nil]; 
CIImage *ciimage = [CIImage imageWithCGImage:imageRef1]; 

我有適用核心圖像過濾器到核心圖像(CIImage),我要測試的功能。我想將輸出圖像作爲子視圖添加到窗口中。所以我需要NSImage。我怎樣才能將這個核心圖像轉換回NSImage?如果我問谷歌,我沒有得到好的結果。

謝謝你的幫助。

+0

一個建議,使之更容易一點:刪除2號線和更換線3 with:CGImageRef imageRef1 = [img1 CGImageForProposedRect:nil context:nil hints:nil]; –

回答

21

我沒有測試過,但我認爲這應該這樣做:

CIImage *ciImage = ...; 

NSCIImageRep *rep = [NSCIImageRep imageRepWithCIImage:ciImage]; 
NSImage *nsImage = [[NSImage alloc] initWithSize:rep.size]; 
[nsImage addRepresentation:rep]; 
8

在斯威夫特:

var rep: NSCIImageRep = NSCIImageRep(ciImage: gaussianBlurFilter.outputImage) 
var nsImage: NSImage = NSImage(size: rep.size) 
nsImage.addRepresentation(rep) 
相關問題