2015-11-07 4 views
3

Я использовал этот метод, чтобы сделать снимок.Конвертировать UIimage (сфотографировать) в NSData

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 = ноль

ответ

4

Вы должны преобразовать 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); 
+0

in let originalImage = CIImage (изображение: ciImage); Невозможно преобразовать значение типа «CIImage» в ожидаемый тип аргумента «UIImage» –

+0

Да, у вас уже есть CIImage. Я отредактировал ответ. – azimov

+1

YESSS !! Thaks :-) –

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