使用名称或任何类型的元数据保存照片

时间:2015-08-14 16:02:56

标签: ios objective-c image metadata

我已经有一个完整的应用程序,可以拍照并将它们放入自定义相册中。我可以为每张专辑命名,我可以完美地检索所有图像。然而,我真正需要的是能够命名单个照片(或使用某种元数据),以便我可以在应用程序内的适当时间显示它们。

我知道如果您将照片存储在应用程序的文档目录中,可以这样做,但我不得不放弃使用该设备的照片库。

有没有人对如何做到这一点有任何想法?

PS。我使用的是Objective-C而不是SWIFT。

1 个答案:

答案 0 :(得分:1)

您可以通过两种方式执行此操作:

1-将照片保存在临时目录中。例如:

var fileManager = NSFileManager()
var tmpDir = NSTemporaryDirectory()
let filename = "YourImageName.png"
let path = tmpDir.stringByAppendingPathComponent(filename)
var error: NSError?
let imageData = UIImagePNGRepresentation(YourImageView.image)
fileManager.removeItemAtPath(path, error: nil)
println(NSURL(fileURLWithPath: path))

if(imageData.writeToFile(path,atomically: true)){
    println("Image saved.")
}else{
    println("Image not saved.")
}

2-使用Photos Framework保存。例如:

if let image: UIImage = YourImageView.image

            let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
            dispatch_async(dispatch_get_global_queue(priority, 0), {
                PHPhotoLibrary.sharedPhotoLibrary().performChanges({
                    let createAssetRequest = PHAssetChangeRequest.creationRequestForAssetFromImage(image)
                    let assetPlaceholder = createAssetRequest.placeholderForCreatedAsset
                    if let albumChangeRequest = PHAssetCollectionChangeRequest(forAssetCollection: self.assetCollection, assets: self.photosAsset) {
                        albumChangeRequest.addAssets([assetPlaceholder])
                    }
                    }, completionHandler: {(success, error)in
                        dispatch_async(dispatch_get_main_queue(), {
                            NSLog("Adding Image to Library -> %@", (success ? "Sucess":"Error!"))
                        })
                })

            })
        }

您可以查看project sample