打开照相和本地相册

_mediaUI = [[UIImagePickerController alloc] init];
    _mediaUI.delegate = self;

- (IBAction)photographBtn:(id)sender {
    UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;
    if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera])
    {
        _mediaUI.sourceType = sourceType;
        _mediaUI.mediaTypes = [[NSArray alloc] initWithObjects: (NSString *)  kUTTypeImage  , nil];
        _mediaUI.allowsEditing = YES;
        [self presentViewController:_mediaUI animated:YES completion:nil];
    }else{
        NSLog(@"模拟其中无法打开照相机,请在真机中使用");
    }
}

- (IBAction)albumBtn:(id)sender {
    _mediaUI.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    _mediaUI.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType: UIImagePickerControllerSourceTypeSavedPhotosAlbum];
    _mediaUI.allowsEditing = NO;
    [self presentViewController:_mediaUI animated:YES completion:nil];
}

- (IBAction)cancelBtn:(id)sender {
    [self.navigationController popViewControllerAnimated:YES];
}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *image = nil;
    NSString *path = [NSString stringWithFormat:@"%@",[info objectForKey:UIImagePickerControllerReferenceURL]];
    NSArray *typeArray = [path componentsSeparatedByString:@"="];
    NSString *type = [typeArray lastObject];
    if(picker.sourceType == UIImagePickerControllerSourceTypeCamera)
    {
        image = [info objectForKey:UIImagePickerControllerOriginalImage];
    }
    else
    {
        NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
        if (CFStringCompare ((CFStringRef) mediaType, kUTTypeImage, 0) == kCFCompareEqualTo)
        {
            image = (UIImage *) [info objectForKey:UIImagePickerControllerOriginalImage];
        }
    }
    NSData *data = nil;
    if ([type isEqualToString:@"JPG"]) {
        data = UIImageJPEGRepresentation(image, 1.0);
    }else{
        data = UIImagePNGRepresentation(image);
    }
//    NSString *fileNameTemp = typeArray[1];
//    NSString *filename = [NSString stringWithFormat:@"%@.%@",[[fileNameTemp componentsSeparatedByString:@"&"] firstObject],type];
//    //图片保存的路径
//    //这里将图片放在沙盒的documents文件夹中
//    NSString * DocumentsPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
//    //文件管理器
//    NSFileManager *fileManager = [NSFileManager defaultManager];
//    //把刚刚图片转换的data对象拷贝至沙盒中 并保存为image.png
//    [fileManager createDirectoryAtPath:DocumentsPath withIntermediateDirectories:YES attributes:nil error:nil];
//    [fileManager createFileAtPath:[DocumentsPath stringByAppendingString:@"/image.png"] contents:data attributes:nil];

    [picker dismissViewControllerAnimated:YES completion:nil];
    _headPortrait.image = [[UIImage imageWithData:data] getRoundImage];

}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    [picker dismissViewControllerAnimated:YES completion:nil];
}
时间: 2024-10-17 09:18:53

打开照相和本地相册的相关文章

IOS研究院之打开照相机与本地相册选择图片

如下图所示 在本地相册中选择一张图片后,我们将他拷贝至沙盒当中,在客户端中将它的缩略图放在按钮旁边,这个结构其实和新浪微薄中选择图片后的效果一样.最终点击发送将按钮将图片2进制图片上传服务器. 下面我们仔细学习具体的细节.创建一个空的IOS项目,接着在创建一个ViewController. AppDelegate.h 应用的代理类 这个没什么好说的就是直接打开刚刚创建的新ViewController. 1 #import <UIKit/UIKit.h> 2 #import "Test

照相、从相册上取照片、播放音频、播放本地视频、播放网络视频、MPMoviePlayerController

一.照相.从相册上去照片 1. 先判断是否支持照相功能 *判断当前设备是否支持照相功能,支持返回YES 否则返回NO 注意:模拟器不支持照相功能 把握一个原则只要是物理硬件相关的功能模拟器都不支持 例如: UIImagePickerController 专门处理与照片相关的功能类 是一个控制器 继承于导航视图控制器 if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]

史上最强Android 开启照相或者是从本地相册选中一张图片以后先裁剪在保存并显示的讲解附源码

整个程序的布局很简单 只在一个垂直方向上的线性布局里面有俩个按钮(Button)和一个显示图片的控件(ImageView)这里就不给出这部分的代码了 1.是打开系统的相册 Intent albumIntent = new Intent(Intent.ACTION_PICK, null); albumIntent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); startActivityFo

Android:支持多选的本地相册

前段时间在做一个动态发布功能,需要用到图片上传.一开始直接调用的系统相册和相机,由于系统相机不支持多选,就花点时间做了个本地相册,在此开源下. 先上截图,依次为选择相册界面.相册详情界面.查看图片大图界面    相册列表按图片数量降序排序,相册详情列表按图片时间降序排序,对比了下微信和QQ的相册,读取的文件基本一致. 接下来说下相册文件遍历的思路.首先肯定不会是通过文件夹逐级遍历的,这样效率太低.查了下API发现Android的系统数据库已经存储了所有的图片路径和缩略图路径(如果有),可直接通过

ios开发之调用相机和本地相册

ios调用本地相机和相册, 非常实用的小功能, 一般做上传头像的时候会用到的比较多. 我用的是iPhone5做的测试, 没有出现什么问题. 用真机测试的主要原因是模拟器无法实现拍照功能, 拍照功能只能在真机上调用.下面是我的一些代码, 写的比较粗糙, 但是简单易懂. // 首先来写一些委托 定义一个全局变量 @interface TestViewController : UIViewController<UIActionSheetDelegate,UIImagePickerControllerD

mui调本地相册上传图片

mui调用本地相册和拍照功能 图例 只用更改上传图片ajax部分代码即可 1.html <div class="headdiv"> <img src="" id="userImg"/> </div> 2.js <script> /*调相机本地相抵上传图片*/ mui.plusReady(function(){ document.getElementById('userImg').addEventLi

Android中通过访问本地相册或者相机设置用户头像

目前几乎所有的APP在用户注册时都会有设置头像的需求,大致分为三种情况: (1)通过获取本地相册的图片,经过裁剪后作为头像. (2)通过启动手机相机,现拍图片然后裁剪作为头像. (3)在APP中添加一些自带的头像资源,供用户选择(不够人性化,目前很少使用). 这次我们简单介绍下通过获取本地相册以及相机拍摄的方法设置头像,实现思路如下: (1)通过startActivityForResult方法,分别传递调用系统相册的Intent和调用相机拍照的Intent来做选择 (2)调用Android系统中

iOS 图片保存到本地相册

点击按钮,将self.imageView上面的image内容保存到本地相册,并指定判断保存成功与否的方法imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo: - (IBAction)saveImageToAlbum:(id)sender {    UIImageWriteToSavedPhotosAlbum(self.imageView.image, self, @selector(imageSavedToPhotosAlbu

iOS--将图片保存至本地相册

今天做聊天,领导说对方给我发一个图片,我要保存到本地,IOS的UIKit Framework提供了UIImageWriteToSavedPhotosAlbum方法对图像进行保存,该方法会将image保存至用户的相册中: 上代码: void UIImageWriteToSavedPhotosAlbum ( UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo ); 参数说明: image : 需