2017-01-18 2 views
0

У меня есть текущий код, который работает на ios.But как многие из вас знают UIKit не в Mac OSX apps.How я мог спасти nsimage с подобозрением я добавилКак сохранить NSImage в Mac OSX с subviews?

private func screenShotMethod() -> NSImage? { 

    //Create the UIImage 
    NSGraphicsBeginImageContext(self.pickedImge.frame.size) 
    self.pickedImge.layer.render(in: UIGraphicsGetCurrentContext()!) 
    let image = NSGraphicsGetImageFromCurrentImageContext() 
    NSGraphicsEndImageContext() 

    //Save it to the camera roll 
    UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil) 
    return image! 
} 

ответ

0

Я портирован это ответ из кода я нашел в this very related question.

class CustomView : NSView { 

    func saveAScreenShotOfThisViewSomewhere() -> Void { 
     self.lockFocus() 
     let rep = NSBitmapImageRep(focusedViewRect: self.bounds) 
     self.unlockFocus() 
     if let data = rep?.tiffRepresentation { 
      do { 
       try data.write(to: URL(string:"/tmp/someplace.tiff")!, options: Data.WritingOptions.atomic) 
      } catch { 
       Swift.print("error in writing -> \(error.localizedDescription)") 
      } 
     } 
    } 
} 

Вы также можете использовать

if let data = rep?.representation(using: .JPEG, properties: [String : Any]) { 

    } 

где представление включает в себя BMP, GIF, JPEG, PNG, TIFF и т.д.

Я надеюсь, что это помогает!

+0

Это замечательно, но я использую NSImage, а не NSView. Функция выше делает снимок экрана с UIImage с subviews –

+0

Вы также можете использовать приведенный выше код для подкласса 'NSImageView', чтобы вы могли сохранить как изображение, содержащееся по представлению изображения, а также его подклассам. Я неправильно понял ваш вопрос? –

Смежные вопросы