使用日期时间元数据将图像保存到相册

时间:2015-10-10 19:23:14

标签: ios swift metadata gif photos

我尝试使用 import java.io.*; import java.util.Scanner; public class MethodLab { public static void main(String[] args) { // variable declarations for part 1 String title; String firstName; String lastName; Scanner in = new Scanner(System.in); // prompt for input for part 1 System.out.print("Enter a title:"); title = in.next(); System.out.print("Enter your first name:"); firstName = in.next(); System.out.print("Enter a your last name:"); lastName = in.next(); // call the method for part 1 greeting(title, firstName, lastName); // variable declarations for part 2 int number1; int number2; // user prompts for part 2 System.out.print("Enter first number:"); number1 = in.nextInt(); System.out.print("Enter second number:"); number2 = in.nextInt(); // call the method for part 2 inside the println statement System.out.println("The largest number is " + max(number1, number2)); } /******************** greeting method goes here*********************/ public static void greeting(String proper, String fname, String lname){ System.out.println(); System.out.printf("Dear " + proper +" "+ fname + " "+ lname); System.out.println(); } /***********************end of method*************************/ /******************** max method goes here*********************/ public static int max(int num1,int num2){ int max = max(num1, num2); return max; } 中的元数据属性将GIF保存到iPhone相册并添加日期/时间元数据,以便保存的GIF显示在其他位置用户的相册而不是相册末尾的默认位置。

我尝试过以下操作:

writeImageDataToSavedPhotosAlbum

并且元数据变量的调试打印显示:

let metadata: [String: AnyObject]! = [kCGImagePropertyTIFFDictionary as String: 
    [kCGImagePropertyTIFFDateTime as String: dateTime!], 
    kCGImagePropertyExifDictionary as String: 
    [kCGImagePropertyExifDateTimeDigitized as String: dateTime!, 
    kCGImagePropertyExifDateTimeOriginal as String: dateTime!]]
library.writeImageDataToSavedPhotosAlbum(data, metadata: metadata, completionBlock: completionBlock)

但是,设置元数据似乎不起作用,因为GIF仍然保存在相册末尾,并带有当前时间戳,而不是我尝试设置的时间戳。

1 个答案:

答案 0 :(得分:1)

照片应用程序似乎没有根据图像元数据中的日期排序(很可能是因为元数据可以存储在iCloud上,它可能在本地不可用)。相反,它似乎按creationDate排序,PHAssetPHPhotoLibrary.sharedPhotoLibrary().performChanges({ () -> Void in let request = PHAssetChangeRequest(forAsset: asset) request.creationDate = dateTime! }, completionHandler: { (success: Bool, error: NSError?) -> Void in dispatch_async(dispatch_get_main_queue()) { //done } }) 上定义的属性。您可以使用Photos框架更改它。这样的事情可以解决问题:

creationDate

但请注意,“相机胶卷”或“所有照片”相册不会对“年”,“收藏集”和“时刻”视图进行排序。出于某种原因,在年份,收藏和时刻的情况下,相机胶卷/所有照片不会对function removeParent(element, num) { var parent = element; for (var i = 0; i < num; i++) { if (parent.parentNode) { parent = parent.parentNode; } } parent.remove(); } 进行排序。它也没有使用照片元数据,因此我不确定它正在检查该照片的排序。