将CIImage转换为NSImage

El *_*ato 14 macos cocoa objective-c core-image nsimage

我正在玩Core Image框架.据我所知,如果我有一个图像(NSImage),首先需要将其转换为CIImage.我能做到.

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];
Run Code Online (Sandbox Code Playgroud)

我有一个功能,将核心图像过滤器应用于核心图像(CIImage),我想测试.我想将输出图像添加到窗口作为子视图.所以我需要NSImage.如何将此核心图像转换回NSImage?如果我问Google,我的效果不会很好.

谢谢您的帮助.

rob*_*off 26

我没有测试过,但我认为应该这样做:

CIImage *ciImage = ...;

NSCIImageRep *rep = [NSCIImageRep imageRepWithCIImage:ciImage];
NSImage *nsImage = [[NSImage alloc] initWithSize:rep.size];
[nsImage addRepresentation:rep];
Run Code Online (Sandbox Code Playgroud)

在Swift中:

let ciImage = ...
let rep = NSCIImageRep(ciImage: ciImage)
let nsImage = NSImage(size: rep.size)
nsImage.addRepresentation(rep)
Run Code Online (Sandbox Code Playgroud)


And*_*dam 13

在Swift中:

var rep: NSCIImageRep = NSCIImageRep(ciImage: gaussianBlurFilter.outputImage)
var nsImage: NSImage = NSImage(size: rep.size)
nsImage.addRepresentation(rep)
Run Code Online (Sandbox Code Playgroud)