Ios 向通过UIImagePickerController捕获的图像添加日期和时间

Ios 向通过UIImagePickerController捕获的图像添加日期和时间,ios,uiimagepickercontroller,Ios,Uiimagepickercontroller,我想将日期和时间添加到使用UIImagePickerController拍摄的图像中 我有一个使用控制器拍照的应用程序,虽然我知道日期存储在元数据中,但我想知道它是否可以很容易地合并到图像中,就像您可以将数码相机设置为如下所示的示例: 注意,这仅在导入并包含ImageIO框架时有效。另一个条件是: [UIImagePickerControllerMetadata]仅在使用源类型设置为UIImagePickerControllerSourceTypeCamera的图像选择器时有效,并且仅适用于静态

我想将日期和时间添加到使用UIImagePickerController拍摄的图像中

我有一个使用控制器拍照的应用程序,虽然我知道日期存储在元数据中,但我想知道它是否可以很容易地合并到图像中,就像您可以将数码相机设置为如下所示的示例:


注意,这仅在导入并包含ImageIO框架时有效。另一个条件是:

[UIImagePickerControllerMetadata]仅在使用源类型设置为UIImagePickerControllerSourceTypeCamera的图像选择器时有效,并且仅适用于静态图像

这是我们从图像中检索日期的方法。如果允许通过相册选择图像,则此解决方案将不起作用。为此,您需要利用ALAsset。如果您纯粹使用相机并在iOS7上运行,此解决方案应该可以工作

#import <ImageIO/ImageIO.h>

// Ensure you've set yourself as the UIImagePickerController delegate to ensure this method is called
 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage* image = info[UIImagePickerControllerOriginalImage];
    image = [self imageWithRenderedDateMetadata:info[UIImagePickerControllerMediaMetadata]
                                        onImage:image];
}

- (UIImage*)imageWithRenderedDateMetadata:(NSDictionary*)metadata onImage:(UIImage*)image
{
    if (!image || !metadata) { return nil; }

    // Get Date String
    // Note: You can format the date string here into a more readable format if you want
    // Here, I'll just use the YYYY:MM:DD HH:MM:SS format given
    NSDictionary *tiffMetadata = metadata[(__bridge id)kCGImagePropertyTIFFDictionary];
    NSString* dateString = tiffMetaData[(__bridge id)kCGImagePropertyTIFFDateTime];

    UIGraphicsBeginImageContext(image.size);

    // Draw the image into the context
    [image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];

    // Position the date in the bottom right
    NSDictionary* attributes = @{NSFontAttributeName :[UIFont boldSystemFontOfSize:30],
                                 NSStrokeColorAttributeName : [UIColor blackColor],
                                 NSForegroundColorAttributeName : [UIColor yellowColor],
                                 NSStrokeWidthAttributeName : @-2.0};

    const CGFloat dateWidth = [dateString sizeWithAttributes:attributes].width;
    const CGFloat dateHeight = [dateString sizeWithAttributes:attributes].height;
    const CGFloat datePadding = 25;

    [dateString drawAtPoint:CGPointMake(image.size.width - dateWidth - datePadding, image.size.height - dateHeight - datePadding)
             withAttributes:attributes];

    // Get the final image
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return newImage;
}
现在,您有了一个包含日期的UIImage;最终结果如下所示:


您是想在图像上显示日期,还是想将图像发送给其他人并添加日期..正如我所写,我想将其合并到jpg图像中,即,使其成为图像的一部分。有那么糟糕的问题吗?