gpt4 book ai didi

ios - 相机胶卷图像的创建日期

转载 作者:搜寻专家 更新时间:2023-11-01 06:24:16 26 4
gpt4 key购买 nike

我正在努力从相机胶卷中选择的图像获取创建日期。这是我的代码:

    func imagePickerController(picker: UIImagePickerController!, didFinishPickingMediaWithInfo info:NSDictionary!) {
var tmpImg = info[UIImagePickerControllerOriginalImage] as UIImage
var metaData: NSDictionary
var exifData: NSDictionary

let library = ALAssetsLibrary()
var dataJpeg: NSData

var url: NSURL = info.objectForKey(UIImagePickerControllerReferenceURL) as NSURL

library.assetForURL(url, resultBlock: {
(asset: ALAsset!) in
if asset != nil {
var image_representation : ALAssetRepresentation = asset.defaultRepresentation()

var iref : CGImage = assetRep.fullResolutionImage().takeUnretainedValue()

//How do I get DateTime from CGImage in Swift??
}
}, failureBlock: {
(error: NSError!) in

NSLog("Error!")
}
)

在带有 Objective-C 的较旧的 Xcode 版本中,我这样做效果很好:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

UIImage *chosenImage = info[UIImagePickerControllerOriginalImage];


//////////////////////////


ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library assetForURL:[info objectForKey:UIImagePickerControllerReferenceURL]
resultBlock:^(ALAsset *asset) {

ALAssetRepresentation *image_representation = [asset defaultRepresentation];

// create a buffer to hold image data
uint8_t *buffer = (Byte*)malloc(image_representation.size);
NSUInteger length = [image_representation getBytes:buffer fromOffset: 0.0 length:image_representation.size error:nil];

if (length != 0) {

// buffer -> NSData object; free buffer afterwards
NSData *adata = [[NSData alloc] initWithBytesNoCopy:buffer length:image_representation.size freeWhenDone:YES];

// identify image type (jpeg, png, RAW file, ...) using UTI hint
NSDictionary* sourceOptionsDict = [NSDictionary dictionaryWithObjectsAndKeys:(id)[image_representation UTI] ,kCGImageSourceTypeIdentifierHint,nil];

// create CGImageSource with NSData
CGImageSourceRef sourceRef = CGImageSourceCreateWithData((__bridge CFDataRef) adata, (__bridge CFDictionaryRef) sourceOptionsDict);

// get imagePropertiesDictionary
CFDictionaryRef imagePropertiesDictionary;
imagePropertiesDictionary = CGImageSourceCopyPropertiesAtIndex(sourceRef,0, NULL);

// get exif data
CFDictionaryRef exif = (CFDictionaryRef)CFDictionaryGetValue(imagePropertiesDictionary, kCGImagePropertyExifDictionary);
NSDictionary *exif_dict = (__bridge NSDictionary*)exif;

NSString *creationdate=exif_dict[@"DateTimeOriginal"];



// clean up
CFRelease(imagePropertiesDictionary);
CFRelease(sourceRef);
}
else {
NSLog(@"image_representation buffer length == 0");
}
}
failureBlock:^(NSError *error) {
NSLog(@"couldn't get asset: %@", error);
}
];}

如果有人能帮助我从图像中获取 CreationDate,我将不胜感激。

最佳答案

基于您的代码和 How can I get image created date time or last modified date time from iOS Photos (like camera roll)?

这个对我适用于 Swift 的 XCode 6.1.1:

func imagePickerController(picker: UIImagePickerController!, didFinishPickingMediaWithInfo info:NSDictionary!) {

let library = ALAssetsLibrary()
var url: NSURL = info.objectForKey(UIImagePickerControllerReferenceURL) as NSURL

library.assetForURL(url, resultBlock: {
(asset: ALAsset!) in
if asset != nil {

//print the creation date
println(asset.valueForProperty(ALAssetPropertyDate))

}
}, failureBlock: {
(error: NSError!) in

NSLog("Error!")
}
)}

关于ios - 相机胶卷图像的创建日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26462800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com