//从相册选图片
- (void)addImageForPhoto{
UIImagePickerController * picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentModalViewController:picker animated:YES];
}
//拍照
- (void)addImageForCamera{
UIImagePickerController * picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
}else{
NSLog(@"模拟器无法打开相机");
}
[self presentModalViewController:picker animated:YES];
}
#pragma 拍照选择照片协议方法
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[UIApplication sharedApplication].statusBarHidden = NO;
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
NSData *data;
if ([mediaType isEqualToString:@"public.image"]){
//切忌不可直接使用originImage,因为这是没有经过格式化的图片数据,可能会导致选择的图片颠倒或是失真等现象的发生,从UIImagePickerControllerOriginalImage中的Origin可以看出,很原始,哈哈
UIImage *originImage = [info objectForKey:UIImagePickerControllerOriginalImage];
//图片压缩,因为原图都是很大的,不必要传原图
UIImage *scaleImage = [self scaleImage:originImage toScale:0.3];
//以下这两步都是比较耗时的操作,最好开一个HUD提示用户,这样体验会好些,不至于阻塞界面
if (UIImagePNGRepresentation(scaleImage) == nil) {
//将图片转换为JPG格式的二进制数据
data = UIImageJPEGRepresentation(scaleImage, 1);
} else {
//将图片转换为PNG格式的二进制数据
data = UIImagePNGRepresentation(scaleImage);
}
[self.dataImageArray addObject:data];
[self.myCollectionView reloadData];
// //将二进制数据生成UIImage
// UIImage *image = [UIImage imageWithData:data];
//隐藏UIImagePickerController本身的导航栏
[self dismissModalViewControllerAnimated:YES];
}
}