// 从摄像头/相册获取图片.使用UIImagePickerController和用户交互,我们需要实现2个协议<UIImagePickerControllerDelegate,UINavigationControllerDelegate>。
#pragma mark - 从⽤户相册获取活动图片
- (void)pickImageFromAlbum
{
imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
/*
UIImagePickerControllerSourceTypePhotoLibrary:表示显示所有的照片
UIImagePickerControllerSourceTypeCamera:表示从摄像头选取照片
UIImagePickerControllerSourceTypeSavedPhotosAlbum:表示仅仅从相册中选取照片。
*/
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
// 模态视图样式
imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
// 用户编辑
imagePicker.allowsEditing = YES;
[self presentViewController:imagePicker animated:YES completion:NULL];
}
// 选择图片后调用
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
/*
//如果是 来自照相机的image,那么先保存
UIImage* original_image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
UIImageWriteToSavedPhotosAlbum(original_image, self,
@selector(image:didFinishSavingWithError:contextInfo:),
nil);
*/
UIImage *resultImage = nil;
UIImage *image = [info objectForKey:@"UIImagePickerControllerEditedImage"];
// 图片压缩
if (image.size.width > 640.0 || image.size.height > 640.0) {
float scale = 640.0 / image.size.width;
CGSize size = CGSizeMake(image.size.width * scale, image.size.height * scale);
resultImage = [self imageWithImageSimple:image scaledToSize:size];
} else {
resultImage = image;
}
[picker dismissViewControllerAnimated:YES completion:^{
;
}];
}
//照片压缩
- (UIImage*)imageWithImageSimple:(UIImage*)image scaledToSize:(CGSize)newSize
{
// Create a graphics image context
UIGraphicsBeginImageContext(newSize);
// Tell the old image to draw in this new context, with the desired
// new size
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
// Get the new image from the context
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
// End the context
UIGraphicsEndImageContext();
// Return the new image.
return newImage;
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[picker dismissViewControllerAnimated:YES completion:^{
;
}];
}