2013-06-30 9 views
6

Gram w Core Image Framework. Jak rozumiem, jeśli mam obraz (NSImage), należy go najpierw przekonwertować na CIImage. Mogę to zrobić.Konwersja CIImage w 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]; 

Mam funkcji, które odnoszą się rdzeń filtru obrazu do obrazu podstawowego (CIImage), którą chcesz przetestować. I chcę dodać obraz wyjściowy do okna jako podglądu. Potrzebuję NSImage. Jak mogę przekonwertować ten obraz z powrotem na NSImage? Jeśli zapytam Google, nie osiągam dobrych wyników.

Dziękuję za pomoc.

+0

Sugestia, aby go trochę łatwiej: usunięcie linii 2 i zastąpić linię 3 z: CGImageRef imageRef1 = [img1 CGImageForProposedRect: zerowy kontekst: zero wskazówki: zero]; –

Odpowiedz

21

nie testowałem, ale myślę, że powinno to zrobić:

CIImage *ciImage = ...; 

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

w Swift:

var rep: NSCIImageRep = NSCIImageRep(ciImage: gaussianBlurFilter.outputImage) 
var nsImage: NSImage = NSImage(size: rep.size) 
nsImage.addRepresentation(rep)