//
// ViewController.m
// 相册提取照片测试
//
// Created by 哈哈 on 15/10/10.
// Copyright © 2015年 哈哈. All rights reserved.
//
#import "ViewController.h"
#import "MLImageCrop.h"
@interface ViewController ()<UINavigationControllerDelegate,UIImagePickerControllerDelegate,MLImageCropDelegate>
@property (weak, nonatomic) IBOutlet UIImageView *imageViewOne;
@property (weak, nonatomic) IBOutlet UIImageView *imageViewTwo;
@property (nonatomic,strong) UIActionSheet *myActionSheet;
@end
@implementation ViewController
- (IBAction)promptClick:(UIButton *)sender {
[self selectPhoto];
}
#pragma mark - 选择照片
- (void)selectPhoto {
// 在这里呼出下方菜单按钮项
_myActionSheet = [[UIActionSheet alloc]initWithTitle:nil
delegate:self
cancelButtonTitle:@"取消"
destructiveButtonTitle:nil
otherButtonTitles: @"拍照", @"选择手机中的照片", nil];
[_myActionSheet showFromTabBar:self.navigationController.tabBarController.tabBar];
}
#pragma mark - actionSheet事件处理
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
// 呼出的菜单按钮点击后的响应
if (buttonIndex == _myActionSheet.cancelButtonIndex) {
NSLog(@"取消");
return;
}
if (buttonIndex == 0) {
// 打开照相机拍照
[self takePhoto];
} else {
// 打开本地相册
[self localPhoto];
}
}
#pragma mark - 调用相机拍照
- (void)takePhoto {
UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;
if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = NO;
picker.sourceType = sourceType;
[self presentViewController:picker animated:YES completion:nil];
} else {
NSLog(@"模拟其中无法打开照相机,请在真机中使用");
}
}
#pragma mark - 打开本地相册
- (void)localPhoto {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.delegate = self;
picker.allowsEditing = NO;
[self presentViewController:picker animated:YES completion:nil];
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)click:(UIButton *)sender {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.delegate = self;
picker.allowsEditing = NO;
[self presentViewController:picker animated:YES completion:nil];
}
- (IBAction)photo:(UIButton *)sender {
UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;
if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = NO;
picker.sourceType = sourceType;
[self presentViewController:picker animated:YES completion:nil];
} else {
NSLog(@"模拟其中无法打开照相机,请在真机中使用");
}
}
#pragma mark - 缩放图片
- (UIImage *)imageWithImageSimple:(UIImage*)image scaledToSize:(CGSize)newSize {
newSize.height = image.size.height * (newSize.width/image.size.width);
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
#pragma mark - 当选择一张图片后进入这里
-(void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSString *type = [info objectForKey:UIImagePickerControllerMediaType];
float ratio = 16.0f/9;
NSLog(@"%@", info);
if ([type isEqualToString:@"public.image"]) {
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
MLImageCrop *imageCrop = [[MLImageCrop alloc]init];
imageCrop.delegate = self;
imageCrop.ratioOfWidthAndHeight = ratio;
imageCrop.image = image;
[imageCrop showWithAnimation:YES];
}
[picker dismissViewControllerAnimated:YES completion:NULL];
return;
}
#pragma mark - crop delegate
- (void)cropImage:(UIImage*)image forOriginalImage:(UIImage*)originalImage
{
UIImage *simage = [self imageWithImageSimple:image scaledToSize:CGSizeMake(600, 336)];
NSData *data = UIImageJPEGRepresentation(simage,1.0);
if (data == nil) {
data = UIImagePNGRepresentation(simage);
}
self.imageViewOne.image = simage;
self.imageViewTwo.image = originalImage;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end