ios - 如何将 AVCaptureStillImageOutput 转换为 UIImage 并另存为 NSData?

标签 ios uiimage swift2 nsdata avcapture

我正在尝试使用我正在使用的应用程序发送照片,我已经让该应用程序拍照,然后当您点击发送时,它会发送您刚刚拍摄的照片以通过邮件发送。

但我不知道如何将 AVCaptureStillImageOutput 类型的照片转换为 UIImage 并将其按顺序存储在 NSData 中将其用作 addAttachmentData 中的附件。

我试着这样做:

let data: NSData = UIImagePNGRepresentation(image: stillImageOutput)

我有这个功能

func doSomethingWithImage(image: UIImage) {
        // do something here
        mc.addAttachmentData(UIImageJPEGRepresentation(UIImage(named: imageAsUIIMage)!, CGFloat(1.0))!, mimeType: "image/jpeg", fileName: "backupOne.jpeg")
    }

但它向我显示错误,“使用未解析的标识符‘imageAsUIIMage’

我想获取 UIImage 以便通过电子邮件发送它。

最佳答案

您可以捕获图像并将其保存到文件,然后使用 stillImageOutput.captureStillImageAsynchronouslyFromConnection()

将其转换为 UIImage
// setup code
stillImageOutput.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG]

captureSession.startRunning()

let connection = stillImageOutput.connectionWithMediaType(AVMediaTypeVideo)
    stillImageOutput.captureStillImageAsynchronouslyFromConnection(connection) { (sampleBuffer, error) in
    // NSData of jpeg data. Save to file and add as email attachment.
    let jpegData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(sampleBuffer)

    dispatch_async(dispatch_get_main_queue(), {
        self.doSomethingWithJPEGImageData(jpegData!)
    })
}

// later on
func doSomethingWithJPEGImageData(jpegData: NSData) {
    mc.addAttachmentData(jpegData, mimeType: "image/jpeg", fileName: "backupOne.jpeg")
}

关于ios - 如何将 AVCaptureStillImageOutput 转换为 UIImage 并另存为 NSData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33000436/

相关文章:

ios - 无法将 JSON 对象映射到 Realm

ios - AWS Cognito Facebook 和 Google Plus 用户登录凭证

ios - 如何观察RestKit中是否有字段。值为null时不调用Setter

iphone - 对于图像元数据,什么标签允许最大字符限制?

ios - 如何使用 Chromecast 在电视上发送 iOS 照片?

ios - 为 Swift 2 更新 Alalmofire 和 SwiftyJSON

ios - CGBitmapContextCreate 在 iOS 9 上停止工作

iphone - 如何在 Objective-C 中将 HEX 转换为 NSString?

ios - UIDynamicAnimator 摇动 Spring 效果

ios - 根据调整大小的 UIImage 变换线点