将UIimage(拍照)转换为NSData

4
我使用这种方法来拍照。
func convertImageFromCMSampleBufferRef(sampleBuffer:CMSampleBuffer) -> CIImage{
    let pixelBuffer:CVPixelBufferRef = CMSampleBufferGetImageBuffer(sampleBuffer)!;
    let ciImage:CIImage = CIImage(CVPixelBuffer: pixelBuffer)

    if done == true {

        newImage =  UIImage(CIImage:ciImage, scale: CGFloat(1.0), orientation: .DownMirrored)

        var imageData = UIImageJPEGRepresentation(newImage, 0.6)
        var compressedJPGImage = UIImage(data: imageData)
        UIImageWriteToSavedPhotosAlbum(compressedJPGImage!, nil, nil, nil)       
    }

    return ciImage;
}

代码应该是可行的,但变量imageData = nil

我尝试将图像转换为PNG格式,但结果相同。

使用打印功能:

newImage = , {720, 1280} imageData = nil

1个回答

6

您需要将CIImage转换为CGImage,然后将CGImage转换为UIImage,最后再将UIImage转换为NSData。

static let context = CIContext(options:nil);
let tempImage:CGImageRef = context.createCGImage(ciImage, fromRect: ciImage.extent())
let image = UIImage(CGImage: tempImage);
let imageData: NSData? = UIImageJPEGRepresentation(image, 0.6);

在 let originalImage = CIImage(image: ciImage); 中,无法将类型为 'CIImage' 的值转换为预期的参数类型 'UIImage'。 - Massimiliano Allegretti
有人知道将数据转换回CIImage的最佳方法吗? - 72A12F4E

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接