iOS 获取相机与相册,上传服务器
来源:互联网 发布:医生在线回答软件 编辑:程序博客网 时间:2024/05/21 00:15
UIActionSheet* actionSheet = [[UIActionSheet alloc]
initWithTitle:nil
delegate:self
cancelButtonTitle:@”取消”
destructiveButtonTitle:nil
otherButtonTitles:@”拍照”,@”从相册选取”,nil];
[actionSheet showInView:self.view];
pragma mark—-
pragma mark—- ActionSheet Delegate Methods
(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
switch (buttonIndex) {
case 0://拍照
{
if (![self ifCanUseSystemCamera]) {
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@”此应用已被禁用系统相机” message:@”请在iPhone的 \”设置->隐私->相机\” 选项中,允许 \”自己App的名字\” 访问你的相机” delegate:self cancelButtonTitle:nil otherButtonTitles:@”确认”, nil];
[alert show];
}else {
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.allowsEditing = YES;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:imagePicker animated:YES completion:nil];
}
}
break;
case 1://从相册选择
{
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.allowsEditing = YES;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentViewController:imagePicker animated:YES completion:nil];} break; default: break;}
}
pragma mark -
pragma UIImagePickerController Delegate
- (void)imagePickerController:(UIImagePickerController )picker didFinishPickingMediaWithInfo:(NSDictionary )info {
if ([[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:(__bridge NSString *)kUTTypeImage]) {
UIImage *img = [info objectForKey:UIImagePickerControllerEditedImage];
[self performSelector:@selector(saveImage:) withObject:img afterDelay:0.5];
}
[picker dismissViewControllerAnimated:YES completion:nil];
}
//点击cancel时调用该方法 - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[picker dismissViewControllerAnimated:YES completion:nil];
}
//保存图片 (void)saveImage:(UIImage *)image {
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
//本地图片路径
NSString *imageFilePath = [documentsDirectory stringByAppendingPathComponent:@”image.jpg”];
success = [fileManager fileExistsAtPath:imageFilePath];
if(success) {
success = [fileManager removeItemAtPath:imageFilePath error:&error];
}
//UIImage *smallImage2=[self scaleFromImage:image toSize:CGSizeMake(80.0f, 80.0f)];//将图片尺寸改为80*80
UIImage *smallImage = [self thumbnailWithImageWithoutScale:image size:CGSizeMake(93, 93)];
[UIImageJPEGRepresentation(smallImage, 1.0f) writeToFile:imageFilePath atomically:YES];//写入文件
//UIImage *selfPhoto = [UIImage imageWithContentsOfFile:imageFilePath];//读取图片文件
NSData *imageData = UIImageJPEGRepresentation(smallImage, 1.0);
[self userSetAvatarWithData:imageData];
}
//上传至服务器(void)userSetAvatarWithData:(NSData *)imageData {
AFHTTPRequestOperationManager *manger = [AFHTTPRequestOperationManager manager];
manger.responseSerializer = [AFHTTPResponseSerializer serializer];
manger.requestSerializer = [AFHTTPRequestSerializer serializer];
manger.requestSerializer.timeoutInterval = 10;NSString *url = [NSString stringWithFormat:@”上传头像的接口”];
url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[manger POST:url parameters:nil constructingBodyWithBlock:^(id formData) {
[formData appendPartWithFileData:data name:@”随便取不能为空” fileName:@”随便取不能为空” mimeType:@”image/jpg”];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@”上传成功”);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@”上传失败”);
}];
}
// 此方法可以改变图片的大小,方便上传到服务器
- (UIImage ) scaleFromImage: (UIImage ) image toSize: (CGSize) size {
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
//2.保持图片原来的长宽比,生成一个缩略图
- (UIImage )thumbnailWithImageWithoutScale:(UIImage )image size:(CGSize)asize {
UIImage *newimage;
if (nil == image) {
newimage = nil;
}
else{
CGSize oldsize = image.size;
CGRect rect;
if (asize.width/asize.height > oldsize.width/oldsize.height) {
rect.size.width = asize.height*oldsize.width/oldsize.height;
rect.size.height = asize.height;
rect.origin.x = (asize.width - rect.size.width)/2;
rect.origin.y = 0;
}
else{
rect.size.width = asize.width;
rect.size.height = asize.width*oldsize.height/oldsize.width;
rect.origin.x = 0;
rect.origin.y = (asize.height - rect.size.height)/2;
}
UIGraphicsBeginImageContext(asize);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]);
UIRectFill(CGRectMake(0, 0, asize.width, asize.height));//clear background
[image drawInRect:rect];
newimage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
return newimage;
}
//判断是否支持相机
- (BOOL)ifCanUseSystemCamera{
NSString *mediaType = AVMediaTypeVideo;
AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];
if(authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied){
NSLog(@"相机权限受限"); return NO;}return YES;
}
- iOS 获取相机与相册,上传服务器
- iOS 获取相机与相册,上传至服务器
- iOS调用相册、相机、上传
- Android:读取本地相册与相机获取图片上传到服务器(用字符串的形式上传)
- ios调用相册或相机上传图片
- iOS调用相册、相机、上传等问题
- iOS调用相册、相机、上传等问题
- iOS 相册 相机的调用及上传
- iOS调用相机,相册,上传头像
- iOS -- 摄像头/相册获取图片,压缩图片,上传服务器
- iOS 相机调用相册打开及图片头像的上传到服务器详解
- [IOS]从相册或相机获取图片
- iOS相册、相机、通讯录权限获取
- iOS 调用相机,获取相册,截取头像
- iOS开发 swift -- 获取相册相机
- iOS相册、相机、通讯录权限获取
- ios获取相机,相册,麦克风权限
- 调用相册与相机获取--路径
- python_爬虫限制
- CentOS下yum安装PHP5.5以上
- jvm参数含义
- mysql子查询用法
- SQLite 子查询
- iOS 获取相机与相册,上传服务器
- 452. Minimum Number of Arrows to Burst Balloons
- 电源:模组 & 非模组(一个码农眼中的 区别 & 选择)
- 效率工具使用帮助
- 优化spring+rabbitmq配置时的问题记录
- python报错——SyntaxError: Non-ASCII character '\xe7
- LeetCode 9. Palindrome Number
- String的一些思考
- mysql批量update语句优化