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