宽容他人,放过自己。

对从手机中获取的图片进行处理

Posted on By anchoriteFili

752372-20151010154214549-2103993000.png

752372-20151010154228706-986813048.png

相册提取照片测试.zip

//
//  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