ios中摄像头/相册获取图片,压缩图片
2015-07-20 18:19
447 查看
从摄像头/相册获取图片是面向终端用户的,由用户去浏览并选择图片为程序使用。在这里,我们需要过UIImagePickerController类来和用户交互。
使用UIImagePickerController和用户交互,我们需要实现2个协议<UIImagePickerControllerDelegate,UINavigationControllerDelegate>。
View Code
我们来看看上面的从相册获取图片,我们首先要实例化UIImagePickerController对象,然后设置imagePicker对象为当前对象,设置imagePicker的图片来源为UIImagePickerControllerSourceTypePhotoLibrary,表明当前图片的来源为相册,除此之外还可以设置用户对图片是否可编辑。
View Code
以上是从摄像头获取图片,和从相册获取图片只是图片来源的设置不一样,摄像头图片的来源为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];
}
使用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]; } |
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]; } |
在和用户交互之后,用户选择好图片后,会回调选择结束的方法。
- (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];
}
相关文章推荐
- iOS学习(一)@property 修饰符
- iOS -- 音频播放、录音、视频播放、拍照、视频录制
- iOS xib View宽高不能改变
- 个人常用iOS第三方库以及XCode插件介绍
- iOS开发 - CoreData框架 数据持久化
- iOS前期OC训练OC_04NSString
- 免费的IOS企业证书打包
- iOS开发 偷懒小技巧---自定义XCode代码片段
- 用CocoaPods做iOS程序的依赖管理
- iOS文本高度计算
- IOS中系统唯一标识ID
- iOS 给照片加水印,文字
- IOS 初始化方法的总结(initWithxxx)
- layoutSubviews
- iOS 渐变色
- 更新ios固件
- ios学习之 方法中的参数为引用类型
- iOS开发-AutoresizingMask
- iOS OC04_属性
- iOS开发的22个奇葩技巧