最近,忙完公司一大堆事情之后,闲来无事,翻看4s相册中的照片,勾起无数美好的回忆,但美中不足的是,忘记了照片拍摄的时间,于是乎,一个用于查看照片拍摄时间的自用app诞生了、、、在这个小app上,我还是花了一点点心思的,当然,那是一些细节问题,现就程序中涉及的主要的、重要的内容做一下总结:
程序的两个核心功能:
1,在拍摄照片时,添加上拍摄时间,并将这个有时间戳的照片存储到系统相册。
2,查看系统相册,选定某一张图片,在UIImageView上显示该图片的时候,显示出图片的拍摄时间。
核心功能一的重要内容:
1,拍照,当然是基于UIImagePickerController的,使用细节,网上到处都是,我就不多说了。不过,我在使用的时候,为了拍照后不进入预览、能连续啪啪、直接存储,进行了如下设置,
_imagePicker.showsCameraControls = NO;
_imagePicker.cameraOverlayView = self.overLayController.view;(我自定义的拍照按钮)
在 点击overLayController上的“拍照”按钮时,调用 [self.imagePicker takePicture];完成拍照。
2,在拍照完成的代理中,使用后台线程或者block来处理和保存照片,这样不会影响到主界面。
#pragma mark UIImagePickerViewControllerDelegate
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *originalImage= [info objectForKey:@"UIImagePickerControllerOriginalImage"];
if (picker.sourceType == UIImagePickerControllerSourceTypeCamera)
{
[self performSelectorInBackground:@selector(processAndSaveImage:) withObject:originalImage];
}
}
3,在processAndSaveImage函数中,我做了两件事,A:在图片的合适位置添加创建时间。 B:保存处理后的图片到相册。
-(void)processAndSaveImage:(UIImage*)originalImage
{
BOOL value = [SettingUtilityisShouldAtTimeAtPhotoing];
UIImage* resultImage =[ImageUtilityaddTimeString:[DateUtilitygetFormatedDateStringOfToday] toCurrentImage:originalImagewithBoolValue:value];
UIImageWriteToSavedPhotosAlbum(resultImage,nil, nil, nil);
}
说明:SettingUtility的作用判断是否需要在照片上添加时间(程序中可设置)。ImageUtility的作用是对图片进行处理,生成需要的图片,这里面比较复杂的是计算时间戳的位置,我的这个算法很鸡肋,不太好意思写出来,各位可自行设计。DateUtility的作用是获取格式化的当前时间,比如,2012-10-10,这个,大家都会的。
至此,拍照、存储照片的核心流程和设置已经说完了,写博客比写代码累多了,先休息一下,下一篇将分享获取以前拍摄过的照片的时间的功能。
谢谢、、、