Görüntü ile birlikte bir görüntü örnek arabelleğinden meta verilerin SOME'unu kaydetmeye çalışıyorum.Swift: Özel kamera, görüntü ile değiştirilmiş meta verileri kaydetme
- meta verilerle o görüntünün kaydet meta veri
- götürüldü meta veri
- kaydet tarih dan yönünü çıkarın meta veri
- gelen yöne görüntüyü döndürme:
ben gerek Belgeler dizini için
Verilerden bir UIImage oluşturmayı denedim, ancak bu çıktı meta veriler. Verilerden bir CIImage kullanmayı denedim, bu da meta verileri koruyor, ancak döndüremiyorum, sonra bir dosyaya kaydediyorum.
private func snapPhoto(success: (UIImage, CFMutableDictionary) -> Void, errorMessage: String -> Void) {
guard !self.stillImageOutput.capturingStillImage,
let videoConnection = stillImageOutput.connectionWithMediaType(AVMediaTypeVideo) else { return }
videoConnection.fixVideoOrientation()
stillImageOutput.captureStillImageAsynchronouslyFromConnection(videoConnection) {
(imageDataSampleBuffer, error) -> Void in
guard imageDataSampleBuffer != nil && error == nil else {
errorMessage("Couldn't snap photo")
return
}
let data = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(imageDataSampleBuffer)
let metadata = CMCopyDictionaryOfAttachments(nil, imageDataSampleBuffer, CMAttachmentMode(kCMAttachmentMode_ShouldPropagate))
let metadataMutable = CFDictionaryCreateMutableCopy(nil, 0, metadata)
let utcDate = "\(NSDate())"
let cfUTCDate = CFStringCreateCopy(nil, utcDate)
CFDictionarySetValue(metadataMutable!, unsafeAddressOf(kCGImagePropertyGPSDateStamp), unsafeAddressOf(cfUTCDate))
guard let image = UIImage(data: data)?.fixOrientation() else { return }
CFDictionarySetValue(metadataMutable, unsafeAddressOf(kCGImagePropertyOrientation), unsafeAddressOf(1))
success(image, metadataMutable)
}
}
Resim kaydetme kodum İşte.
func saveImageAsJpg(image: UIImage, metadata: CFMutableDictionary) {
// Add metadata to image
guard let jpgData = UIImageJPEGRepresentation(image, 1) else { return }
jpgData.writeToFile("\(self.documentsDirectory)/image1.jpg", atomically: true)
}
ben .first 'NSSearchPathForDirectoriesInDomains (.DocumentDirectory, .UserDomainMask, doğru) olan' filePath' alabilirsiniz varsayarak yaşıyorum! + "name.png". Ancak, 'fileService' nedir? FileService özel bir sınıf mı? –
@ Carlos.V 'fileService'' NSFileManager'ı sarmak ve hayatımı kolaylaştırmak için yaptığım özel bir sınıftır. – SeanRobinson159
Asıl meta verileri okuyabiliyorum ve değiştirebiliyorum, ancak yeni meta dosyasını dosyaya yazamıyorum. ".save()" işlevinin nasıl çalıştığını biraz açıklayabilir misiniz ?, 'fileMan.createFileAtPath (filePath, content: finalData, attributes: metadata as! [String: AnyObject]) 'yi kullanmayı denedim ama kaydetmedim meta veri, diğer özellikler içindir. Belki 'PHPhotoLibrary' kullanıyor musunuz? Bence böyle deniyorum ama% 100 çalışacağından emin değilim. –