使用Swift 2.2 OS X将元数据重写为.jpg文件

时间:2016-07-21 19:27:21

标签: swift macos metadata

我尝试从JPG文件重写元数据。我想在元数据中添加一个关键字。 Xcode不会给出任何错误,但文件没有改变。 这是我的代码:

var pathToOpenFile:NSURL?

接下来,我将路径从文件写入变量“pathToOpenFile”。 如果用户按下ENTER按钮进入NSTextField,则执行操作:

    @IBAction func endEditKeys(sender: AnyObject) {
       if (pathToOpenFile != nil) {
           let imageSource = CGImageSourceCreateWithURL(pathToOpenFile!, nil)
           let imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource!, 0, nil)! as NSDictionary;
           let exifDict = imageProperties.valueForKey("{IPTC}")  as! NSDictionary;
           var Keywords:[String] = exifDict.valueForKey("Keywords") as! [String];
           Keywords.append("ANY")
           exifDict.setValue(Keywords, forKey: "Keywords")

           let type = CGImageSourceGetType(imageSource!)
           let count = CGImageSourceGetCount(imageSource!)
           let mutableData = NSMutableData(contentsOfURL: pathToOpenFile!)
           let destination = CGImageDestinationCreateWithData(mutableData!, type!, count, nil)
           let removeExifProperties: CFDictionary = exifDict 

             for i in 0..<count {
                CGImageDestinationAddImageFromSource(destination!, imageSource!, i, removeExifProperties)
             }

           CGImageDestinationFinalize(destination!)
      }
    }

你能帮助我,为什么它不起作用(不改变元数据)?谢谢!

1 个答案:

答案 0 :(得分:0)

谢谢大家! 它工作正常,只需要重写.JPG文件。

if let _ = try? mutableData!.writeToURL(pathToOpenFile!, options: NSDataWritingOptions.AtomicWrite) {
          //  if you need, do anything. For example "print ("Savig file")"
        }