iOS访问相册及拍照保存的实现实例



iOS访问相册及拍照保存的实现实例



实现效果:

1、点击访问相册按钮,可以访问系统相册,选择以后返回在imageView中显示

2、点击拍照,访问摄像头,实现以后保存在相册中,返回在imageView中显示

注意:拍照功能需要真机调试,模拟器无法实现

模拟器会有如下效果~弹出警告框



工程下载:github工程下载链接



下面是程序:注意此例中两个button和UIimageView在storyboard中添加;

ViewController.h

@interface ViewController : UIViewController<UINavigationControllerDelegate,UIImagePickerControllerDelegate>

@property (weak, nonatomic) IBOutlet UIImageView *imageShow;

@end

ViewController.m

#pragma mark - 拍照并保存
- (IBAction)takePhotoAction:(id)sender {
    BOOL isCamera = [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear];
    if (!isCamera) { //若不可用,弹出警告框
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"无可用摄像头" message:nil delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
        [alert show];
        return;
    }
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
    /**
     *      UIImagePickerControllerSourceTypePhotoLibrary  ->所有资源文件夹
            UIImagePickerControllerSourceTypeCamera        ->摄像头
            UIImagePickerControllerSourceTypeSavedPhotosAlbum ->内置相册
     */
    imagePicker.delegate = self;    //设置代理,遵循UINavigationControllerDelegate,UIImagePickerControllerDelegate协议
    [self presentViewController:imagePicker animated:YES completion:nil];
}
#pragma mark - 访问相册
- (IBAction)browseAlbum:(id)sender {
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
    imagePicker.delegate = self;
    [self presentViewController:imagePicker animated:YES completion:nil];
}
#pragma mark - 协议方法的实现
//协议方法,选择完毕以后,呈现在imageShow里面
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    NSLog(@"%@",info);  //UIImagePickerControllerMediaType,UIImagePickerControllerOriginalImage,UIImagePickerControllerReferenceURL
    NSString *mediaType = info[@"UIImagePickerControllerMediaType"];
    if ([mediaType isEqualToString:@"public.image"]) {  //判断是否为图片

        UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
        self.imageShow.image = image;

        //通过判断picker的sourceType,如果是拍照则保存到相册去
        if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) {
            UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
        }
    }
//  else  当然可能是视频,这里不作讨论~方法是类似的~
    [picker dismissViewControllerAnimated:YES completion:nil];
}

//此方法就在UIImageWriteToSavedPhotosAlbum的上方
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
    NSLog(@"已保存");
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-05 14:57:58

iOS访问相册及拍照保存的实现实例的相关文章

iOS 拍照保存到相册

之前看了一些开源的代码,里面有一个功能,就是将图片下载到相册,仔细看了其中的代码,只有很简单的一句话,并且保存过后,还可以判断是否保存成功. 如下代码所示, 点击按钮,将self.imageView上面的image内容保存到本地相册,并指定判断保存成功与否的方法imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo: - (IBAction)saveImageToAlbum:(id)sender {    UIImageWrite

iOS开发中访问相册摄像像头

源码下载地址http://download.csdn.net/download/jingjingxujiayou/7270479 在AppDelegate.m文件中 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen

iOS11访问相册权限变更问题

手机升到iOS 11后  发现之前正常的图片保存功能无法正常使用  会闪退 经测试发现应该是权限没有开启的原因  但是NSPhotoLibraryUsageDescription已经写入plist  且在iOS 11之前的手机系统上是正常的 通过查阅资料得知 OS11之后:默认开启访问相册权限(读权限),无需用户授权,无需添加NSPhotoLibraryUsageDescription,适配iOS11之前的还是需要加的. 添加图片到相册(写权限),需要用户授权,需要添加NSPhotoLibrar

从相册读取本地保存的二维码并跳转h5链接

因公司业务需求,在扫描二维码基础的前提下,也需要满足用户点击相册按妞,从相册获取本地保存二维码实现签到功能,在网上查阅相关资料后,整理了下,有以下几种方式: ios8.0以后可以通过使用系统原生的框架实现该功能,即CIDetector,直接上代码,但是通过验证发现,大部分二维码都能够识别,但是对于通过拍照保存的二维码,则出现很大概率无法识别,故此方法限制性比较大,不建议推荐使用,如想使用,可以直接照搬网上相关的代码; 使用先阶段比较流行的zxingObjC框架来扫描相册的二维码,但该框架不好用的

进阶篇第九期:相册与拍照的后处理

在中级篇里面,已经介绍过相册与拍照的简单使用了,那么接下来我们就来讲一讲它们的后续处理,到底应该怎么做才好呢 首先我们先来讲拍照 还是那个点击使用照片后调用的代理方法中,我们来做以下代码中所提到的事情   - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {     [picker dismissViewControl

拍照保存(调用手机),对话框的自定义样式

主页面布局文件很简单就是一个按钮弹出对话框,一个imageView显示选择的图片. 我给大家提供了下载代码在这个网页:http://download.csdn.net/download/u011348453/7669871 main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/r

转载:Android调用相册、拍照实现缩放、切割图片

好几天没有写博客了,感觉都有点懈怠了.笔者参加了大学生第二届软件设计大赛,这几天 一直在弄大赛的事情,没有花些时间来整理博客.好在经过一些时日比赛的东西也弄得差不多了, 接下来就是将这段时间学习里面有用的东西做一些总结. 今天做的就是关于实现图片的区域裁剪功能.由于项目功能的需要笔者需要实现PDF文档的 阅读,并且就某个页面实现“图片”裁剪(一个页面理解为一张图片).笔者对着方面是一点儿也不熟 悉,因此就得上网查资料了.之后笔者找到了Android可以通过调用系统相册.拍照实现图片的 裁剪.缩放

iOS.访问通讯录.02.写入联系人

一.创建联系人 1.创建联系人记录 ABRecord person = ABPersonCreate(); 2.保存或修改单值属性 bool ABRecordSetValue( ABRecordRef record, ABPropertyID property, CFTypeRef value, CFErrorRef *error ); 例子: CFError error = NULL; // 保存姓名 ABRecordSetValue(person,kABPersonFirstNameProp

初级篇第九期:学习相册与拍照

学习建议:自己动手,丰衣足食 学习周期:1周 学习目的:熟练使用相册和拍照 学习答疑:欢迎来技术群里提问并做分享 学习工具:Xcode开发环境 学习内容:熟悉相册与拍照的那点事情 说到相册与拍照,我想对于现在的小伙伴们来讲,可以说是再熟悉不过了,因为每个人都希望用自己的app去拍照,去玩相册,几乎很多很多的APP里面都会有相关的功能,所以对于这方面的内容来讲,是非常非常重要的哦,所以小伙伴们一定要好好学习它哦 其实说它们简单?那真是言之过早,对于相册与拍照的相关优化真的可以说的上是很深的坑哦,一