LoginSignup
4
3

More than 5 years have passed since last update.

Swift:CGImage ←→ NSImage ←→ CIImage【変換Extension】

Last updated at Posted at 2019-01-18

概要

Swift4でNSImage,CGImage,CIImageを相互変換するExtention

NSImgae → CGImage

extension NSImage {
    public var cgImage: CGImage? {
        guard let imageData = self.tiffRepresentation else { return nil }
        guard let sourceData = CGImageSourceCreateWithData(imageData as CFData, nil) else { return nil }
        return CGImageSourceCreateImageAtIndex(sourceData, 0, nil)
    }
}

NSImage → CIImgae

extension NSImage {
    public var ciImage: CIImage? {
        guard let imageData = self.tiffRepresentation else { return nil }
        return CIImage(data: imageData)
    }
}

CGImage → NSImgae

extension CGImage {
    public var nsImage: NSImage? {
        let size = CGSize(width: self.width, height: self.height)
        return NSImage(cgImage: self, size: size)
    }
}

CGImage → CIImgae

extension CGImage {
    public var ciImage: CIImage {
        return CIImage(cgImage: self)
    }
}

CIImage → NSImgae

extension CIImage {
    public var nsImage: NSImage {
        let rep = NSCIImageRep(ciImage: self)
        let nsImage = NSImage(size: rep.size)
        nsImage.addRepresentation(rep)
        return nsImage
    }
}

CIImage → CGImgae

extension CIImage {
    public var cgImage: CGImage? {
        let context = CIContext(options: nil)
        return context.createCGImage(self, from: self.extent)
    }
}
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3