2013-06-30 23 views
6

Tôi đang chơi với khung Hình ảnh cốt lõi. Theo tôi hiểu, nếu tôi có hình ảnh (NSImage), trước tiên, cần phải chuyển đổi thành CIImage. Tôi có thể làm điều đó.Chuyển đổi CIImage thành 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]; 

Tôi có một chức năng áp dụng một bộ lọc lõi Image to một hình ảnh cốt lõi (CIImage), mà tôi muốn thử nghiệm. Và tôi muốn thêm hình ảnh đầu ra vào một cửa sổ như một subview. Vì vậy, tôi cần NSImage. Làm thế nào tôi có thể chuyển đổi hình ảnh cốt lõi này trở lại vào NSImage? Nếu tôi hỏi Google, tôi không có kết quả tốt.

Cảm ơn sự giúp đỡ của bạn.

+0

Một gợi ý để làm cho nó một chút dễ dàng hơn: loại bỏ dòng 2 và thay thế dòng 3 với: CGImageRef imageRef1 = [img1 CGImageForProposedRect: nil context: nil gợi ý: nil]; –

Trả lời

21

tôi đã không kiểm tra nó, nhưng tôi nghĩ rằng điều này sẽ làm điều đó:

CIImage *ciImage = ...; 

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

Trong Swift:

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