取本地相册,保存到项目
来源:互联网 发布:sql组合主键 编辑:程序博客网 时间:2024/06/11 14:12
1.引用系统类库MediaPlayer.framework和MobileCoreServices.framework
代码中绰用:
#import<MediaPlayer/MediaPlayer.h> 和
#import<MediaPlayer/MediaPlayer.h>
头文件如下:
#import<UIKit/UIKit.h>
#import<MediaPlayer/MediaPlayer.h>
@interface ViewController :UIViewController
<UIImagePickerControllerDelegate>{
UIPopoverController *popoverController;
}
@property (strong,nonatomic)IBOutletUIImageView *imageView;
@property (strong,nonatomic)IBOutletUIButton *takePictureButton;
@property (strong,nonatomic)MPMoviePlayerController *moviePlayerController;
@property (strong,nonatomic)UIImage *image;
@property (strong,nonatomic)NSURL *movieURL;
@property (copy,nonatomic)NSString *lastChosenMediaType;
@property (assign,nonatomic)CGRect imageFrame;
-(IBAction)SaveImage:(id)sender;
- (IBAction)shootPictureOrVideo:(id)sender;
- (IBAction)selectExistingPictureOrVideo:(id)sender;
@end
2.取本地相册(IPAD要承载UIPopoverController来显示)
- (void)getMediaFromSource:(UIImagePickerControllerSourceType)sourceType {
NSArray *mediaTypes = [UIImagePickerController
availableMediaTypesForSourceType:sourceType];
if ([UIImagePickerControllerisSourceTypeAvailable:
sourceType] && [mediaTypescount] >0) {
NSArray *mediaTypes = [UIImagePickerController
availableMediaTypesForSourceType:sourceType];
UIImagePickerController *picker =
[[UIImagePickerControlleralloc]init];
picker.mediaTypes = mediaTypes;
picker.delegate =self;
picker.allowsEditing =NO;//如果为YES则表示可编辑选取图片
picker.sourceType = sourceType;
UIPopoverController *popover = [[UIPopoverControlleralloc]initWithContentViewController:picker];
popoverController = [popover retain];
[popoverControllerpresentPopoverFromRect:CGRectMake(0,0,500,300)inView:self.viewpermittedArrowDirections:UIPopoverArrowDirectionAnyanimated:YES];
[popover release];
[picker release];
} else {
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Error accessing media"
message:@"Device doesn’t support that media source."
delegate:nil
cancelButtonTitle:@"Drat!"
otherButtonTitles:nil];
[alert show];
}
}
[selfgetMediaFromSource:UIImagePickerControllerSourceTypePhotoLibrary];
3.选择图片(或选择编辑后图片),调用#pragma mark UIImagePickerController delegate methods
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info {
self.lastChosenMediaType = [infoobjectForKey:UIImagePickerControllerMediaType];
NSLog(@"%@",[infoobjectForKey:UIImagePickerControllerReferenceURL]);
if ([lastChosenMediaTypeisEqual:(NSString *)kUTTypeImage]) {
UIImage *chosenImage = [infoobjectForKey:UIImagePickerControllerOriginalImage];
UIImage *shrunkenImage = shrinkImage(chosenImage,imageFrame.size);
self.image = shrunkenImage;
} else if ([lastChosenMediaTypeisEqual:(NSString *)kUTTypeMovie]) {
self.movieURL = [infoobjectForKey:UIImagePickerControllerMediaURL];
}
[popoverControllerdismissPopoverAnimated:YES];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[popoverControllerdismissPopoverAnimated:YES];
}
#pragma mark --将图片放大、缩小到指定大小(当)
staticUIImage *shrinkImage(UIImage *original,CGSize size) {
CGFloat scale = [UIScreenmainScreen].scale;
CGColorSpaceRef colorSpace =CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, size.width * scale,
size.height * scale,8,0, colorSpace,kCGImageAlphaPremultipliedFirst);
CGContextDrawImage(context,
CGRectMake(0,0, size.width * scale, size.height * scale),
original.CGImage);
CGImageRef shrunken = CGBitmapContextCreateImage(context);
UIImage *final = [UIImage imageWithCGImage:shrunken];
CGContextRelease(context);
CGImageRelease(shrunken);
return final;
}
-(void)SaveImage:(id)sender{
NSData *imageData = nil;
imageData=UIImagePNGRepresentation(self.image);
int value=arc4random();
NSDateFormatter *formatter = [[NSDateFormatteralloc]init]; [formattersetDateFormat:@"yyyyMMddHHmmss"];
NSString *locationString=[formatter stringFromDate: [NSDatedate]];
NSLog(@"%@",locationString);
[formatter release];
[imageDatawriteToFile:[NSStringstringWithFormat:@"%@/%d.jpg",[selfdataFilePath],value]atomically:YES];
}
//取得沙盒目录
-(NSString *)dataFilePath {
NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSLog(@"%@",documentsDirectory);
return documentsDirectory;
}
//显示图片或视频到当前视图
- (void)updateDisplay {
if ([lastChosenMediaTypeisEqual:(NSString *)kUTTypeImage]) {
imageView.image =image;
//imageView.hidden = NO;
//moviePlayerController.view.hidden = YES;
} else if ([lastChosenMediaTypeisEqual:(NSString *)kUTTypeMovie]) {
[self.moviePlayerController.viewremoveFromSuperview];
self.moviePlayerController = [[MPMoviePlayerControlleralloc]
initWithContentURL:movieURL];
moviePlayerController.view.frame =imageFrame;
moviePlayerController.view.clipsToBounds =YES;
[self.viewaddSubview:moviePlayerController.view];
imageView.hidden = YES;
}
}
//判断是否连接摄像头
if (![UIImagePickerControllerisSourceTypeAvailable:
UIImagePickerControllerSourceTypeCamera]) {
takePictureButton.hidden =YES;//不存在摄像头
}
- 取本地相册,保存到项目
- 图片保存到本地相册
- 保存图片到本地相册
- 保存图片到本地相册
- 保存图片到本地相册
- 保存图片到本地相册
- 保存图片到本地相册
- ios--保存图片到本地相册
- IOS图片保存到本地相册
- iOS图片保存到本地相册
- 将图片保存到相册(本地)
- imageView图片保存到本地和相册
- iOS _ 图片保存到本地相册
- iOS 图片保存到本地相册
- 将突破保存到本地相册
- android相册拍照保存图片到本地
- 将图片保存到本地相册
- iOS从本地相册选取图片, 把图片保存到本地相册
- Linux下的sudo及其配置文件/etc/sudoers的详细配置说明
- 【Java类集】_ListIterator接口笔记(实例亲测)
- C语言文件操作之fgets()
- hostapd
- golang 并行转串行透明代理
- 取本地相册,保存到项目
- ORA-12519: TNS:no appropriate service handler found 解决
- (C#)检索出一个字符串中某字符第n次出现的位置(IndexOf)
- 参考苹果对方法的命名的规范
- 主数据管理功能模块、实施、提供厂商
- “Incorrect Architecture” when trying to install iPhone app onto my development device
- android 优化内存溢出之三
- 链表实现
- MBProgressHUD的使用---图像及动画处理三:WaitingBar