Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.93 KB | None | 0 0
  1. extension NSImage {
  2. /// Create a CIImage using the first available bitmap representation of the image
  3. ///
  4. /// NSImage can contain multiple representations of the image. This function uses the first 'bitmappable' image
  5. ///
  6. /// - Returns: Converted image, or nil
  7. func asCIImage() -> CIImage? {
  8. if let tiffdata = self.tiffRepresentation,
  9. let bitmap = NSBitmapImageRep(data: tiffdata) {
  10. return CIImage(bitmapImageRep: bitmap)
  11. }
  12. return nil
  13. }
  14.  
  15. /// Create a CGImage using the first available bitmap representation of the image
  16. ///
  17. /// NSImage can contain multiple representations of the image. This function uses the first 'bitmappable' image
  18. ///
  19. /// - Returns: Converted image, or nil
  20. func asCGImage() -> CGImage? {
  21. if let imageData = self.tiffRepresentation,
  22. let sourceData = CGImageSourceCreateWithData(imageData as CFData, nil) {
  23. return CGImageSourceCreateImageAtIndex(sourceData, 0, nil)
  24. }
  25. return nil
  26. }
  27. }
  28.  
  29. extension CIImage {
  30. /// Create a CGImage version of this image
  31. ///
  32. /// - Returns: Converted image, or nil
  33. func asCGImage(context: CIContext? = nil) -> CGImage? {
  34. let ctx = context ?? CIContext(options: nil)
  35. return ctx.createCGImage(self, from: self.extent)
  36. }
  37.  
  38. /// Create an NSImage version of this image
  39. ///
  40. /// - Returns: Converted image, or nil
  41. func asNSImage() -> NSImage? {
  42. let rep = NSCIImageRep(ciImage: self)
  43. let updateImage = NSImage(size: rep.size)
  44. updateImage.addRepresentation(rep)
  45. return updateImage
  46. }
  47. }
  48.  
  49. extension CGImage {
  50. /// Create a CIImage version of this image
  51. ///
  52. /// - Returns: Converted image, or nil
  53. func asCIImage() -> CIImage {
  54. return CIImage(cgImage: self)
  55. }
  56.  
  57. /// Create an NSImage version of this image
  58. ///
  59. /// - Returns: Converted image, or nil
  60. func asNSImage() -> NSImage? {
  61. return NSImage(cgImage: self, size: .zero)
  62. }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement