您的位置:首页 > 移动开发 > IOS开发

ios中摄像头/相册获取图片,压缩图片

2015-07-20 18:19 447 查看
从摄像头/相册获取图片是面向终端用户的,由用户去浏览并选择图片为程序使用。在这里,我们需要过UIImagePickerController类来和用户交互。
    使用UIImagePickerController和用户交互,我们需要实现2个协议<UIImagePickerControllerDelegate,UINavigationControllerDelegate>。

View Code

 代码如下复制代码
#pragma mark 从用户相册获取活动图片

- (void)pickImageFromAlbum

{

    imagePicker = [[UIImagePickerController alloc] init];

    imagePicker.delegate = self;

    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

    imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

    imagePicker.allowsEditing = YES;

   

    [self presentModalViewController:imagePicker animated:YES];

}
   我们来看看上面的从相册获取图片,我们首先要实例化UIImagePickerController对象,然后设置imagePicker对象为当前对象,设置imagePicker的图片来源为UIImagePickerControllerSourceTypePhotoLibrary,表明当前图片的来源为相册,除此之外还可以设置用户对图片是否可编辑。

View Code

 代码如下复制代码
#pragma mark 从摄像头获取活动图片

- (void)pickImageFromCamera

{

    imagePicker = [[UIImagePickerController alloc] init];

    imagePicker.delegate = self;

    imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;

    imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

    imagePicker.allowsEditing = YES;

   

    [self presentModalViewController:imagePicker animated:YES];

}
   以上是从摄像头获取图片,和从相册获取图片只是图片来源的设置不一样,摄像头图片的来源为UIImagePickerControllerSourceTypeCamera。

    在和用户交互之后,用户选择好图片后,会回调选择结束的方法。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

{

    [picker dismissViewControllerAnimated:YES completion:nil];

    if (picker.sourceType == UIImagePickerControllerSourceTypeCamera)

    {

        UIImage *image = info[UIImagePickerControllerOriginalImage];

        //获取并压缩图片

         NSData *imageData = UIImageJPEGRepresentation(image, 1);

        [self.imageArray addObject:[imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]];//ios 7 出来的原生base64  方法

        [self.imageArray1 addObject:[UIImage imageWithData:imageData]];

        ViewController *listVc = [[ViewController alloc]initWithNibName:@"aaa"

                                                                                         bundle:nil];

        [self.navigationController pushViewController:listVc

                                             animated:YES];

    }

}else{

        NSURL *imageURL = info[UIImagePickerControllerReferenceURL];

        ALAssetsLibraryAssetForURLResultBlock resultrBlock = ^(ALAsset *asset){

            ALAssetRepresentation *representation = [asset defaultRepresentation];

            NSString *fileName = [representation filename];//获取图片的名字

            UIImage *image = [UIImage imageWithCGImage:[representation fullResolutionImage]];//获取所有图片

            // 获取并压缩图片

            NSData *imgData = UIImageJPEGRepresentation(image, 1);

            [self.imageArray addObject:[imgData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]];

            [self.imageCells addObject:[UIImage imageWithData:imgData]];

//            [weakSelf layoutImageItems];

        };

        

        ALAssetsLibrary* assetslibrary = [[ALAssetsLibrary alloc] init];

        [assetslibrary assetForURL:imageURL

                       resultBlock:resultrBlock

                      failureBlock:nil];

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: