简单的使用ios自带拍照裁剪功能

今天项目里要用到图片的裁剪功能,本来想找第三方,但是查了下资料,觉得如果只是要简单的实现其实也不难,所以决定自己写一下

// 关于图片的选择
 //点击要选取图片的view的时候要弹出两个选项,拍照和选取本地
- (void)addImageClick
{
    [_drawlineView removeFromSuperview];
    //    [self takePhotoAction];

    UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:@"请选择获取方式" message:nil preferredStyle:UIAlertControllerStyleActionSheet];

    [actionSheet addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {

        // Cancel button tappped.
        [self dismissViewControllerAnimated:YES completion:^{
        }];
    }]];

    [actionSheet addAction:[UIAlertAction actionWithTitle:@"拍照" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {

        // 拍摄新照片
        [self takePhotoAction];

    }]];

    [actionSheet addAction:[UIAlertAction actionWithTitle:@"从相册选" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {

        // 从相片中读取
        [self browseAlbum];

    }]];

    [self presentViewController:actionSheet animated:YES completion:nil];

}
//拍照
//最好就是要判断一下相机可不可用, allowsEditing是用来设置照片是否可以编辑,就是会不会出现一个框框来约束图片的比例
// sourceType  在拍照时用的 UIImagePickerControllerSourceTypeCamera  在选取图片时用 UIImagePickerControllerSourceTypeSavedPhotosAlbum
- (void)takePhotoAction {
    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;
    imagePicker.allowsEditing = YES;
    imagePicker.delegate = self;
    [self presentViewController:imagePicker animated:YES completion:nil];
}
//不管拍照还是选取本地图片,完成后都会调用这个方法
//info 里面放的图片的所有信息  UIImagePickerControllerOriginalImage这个key拿的是原图   UIImagePickerControllerEditedImage拿的是图片裁剪后的图
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    NSString *mediaType = info[@"UIImagePickerControllerMediaType"];
    if ([mediaType isEqualToString:@"public.image"]) {  //判断是否为图片

         UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];//这里拿到图片

         //拿到图片,你要做什么事........
         {
           //do something
         }

         //通过判断picker的sourceType,如果是拍照则保存到相册去
        if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) {
            UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

        }

    }
 }

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error
  contextInfo:(void *)contextInfo
{
    // Was there an error?
    if (error != NULL)
    {
        // Show error message...
        [WSToast showToastWithTitle:error.description duration:TOAST_VIEW_TIME completeCallBack:nil];
    }
    else  // No errors
    {
        // Show message image successfully saved
        [WSToast showToastWithTitle:@"图片已保存" duration:TOAST_VIEW_TIME completeCallBack:nil];
    }
}

  WSToast 是我项目里面封装的提示展示框,当然,这只是简单的实现裁剪,裁剪的比例是固定不变的,而且也不能多选,就是简单的需求而已

时间: 2024-12-21 05:49:26

简单的使用ios自带拍照裁剪功能的相关文章

最简单的基于FFmpeg的移动端例子附件:IOS自带播放器

前几篇文章记录的都是IOS下基于FFmpeg的多媒体程序.本文记录一个IOS下自带的视频播放器.相比于移植FFmpeg来说,IOS自带的多媒体框架播放视频要简单很多--只需要调用几个接口就可以了. 源代码 项目的源代码位于ViewController.m文件中,内容如下所示. /** * 最简单的IOS视频播放器 * Simplest IOS Player * * 雷霄骅 Lei Xiaohua * [email protected] * 中国传媒大学/数字电视技术 * Communicatio

ios 自带xml 解析,TBXMLParser解析

今天看了下苹果xml 解析,写了个小demo 心想还是 在博客上写点东西吧,毕竟很久很久都没有上来了 先上个效果图把 接下来 看下 工程目录图吧 本demo 分两种解析模式,一是苹果自带的, 首先先看下苹果自带的吧,工程文件为 NoteXMLParser 文件 ,另一种解析模式 是 NotesTBXMLParser文件 NoteXMLParser.h 文件代码如下 : // // NoteXMLParser.h // TestXML // // Created by choni on 14-5-

iOS 自带刷新功能

这里只介绍UIRefreshControl的使用方法,虽然EGO已经用得挺舒服的了,但是官方给的.毕竟还是蛮简单的 ================================================== UIRefreshControl 具有一个默认的高度和宽度 一旦创建,便自动管理.只有当用户用力刷新才能刷新,尤其...那朵菊花,用力越大,转速越快,感觉还不错哦.(瞬间...邪恶了) 下面介绍一下如何使用:     self.refreshControl = [[UIRefres

iOS 自带定位功能

第一步:导入头文件 #import <CoreLocation/CoreLocation.h> #import <CoreLocation/CLLocationManagerDelegate.h> 第二步:设置代理 CLLocationManagerDelegate 第三步:创建一个属性 @property(nonatomic, strong) CLLocationManager *locationManager; 第四步:初始化     //定位服务管理对象初始化     _lo

手机调用系统的拍照和裁剪功能,如果界面有输入框EditText,在一些手机会出现点击EditText会弹出输入法,却不能输入的情况。

code如下: //Longest common sequence, dynamic programming method void FindLCS(char *str1, char *str2) { if(str1 == NULL || str2 == NULL) return; int length1 = strlen(str1)+1; int length2 = strlen(str2)+1; int **csLength,**direction;//two arrays to recor

史上最简单的带流控功能的http server

s.py import time import SimpleHTTPServer import SocketServer BYTES_PER_SECOND=160*1024 class MyHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): def do_GET(self): """Serve a GET request.""" f = self.send_head() i

IOS自带输入法中文不触发KEYUP事件导致vue双向绑定错误问题

先上图: 可以看到输入框中的内容和弹出框的内容不一致, <input class="am-fr labRight" id="txcode" type="text" placeholder="请输入纳税人识别号" v-model="invBuyer.TaxCode" /> 文本框使用的是vue的v-model双向绑定,在android中是ok的,在IOS上不行, 导致问题出现的原因是IOS自带输入

js简单 图片版时钟,带翻转效果

js简单 图片版时钟,带翻转效果 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>时钟</title> <style type="text/css"> ul,li{ list-style: none; margin: 0; padding: 0; } ul{ position: absolute; left: 2

iOS自带TTS技术的实现即语音播报

文本转语音技术, 也叫TTS, 是Text To Speech的缩写. iOS如果想做有声书等功能的时候, 会用到这门技术. 一,使用iOS自带TTS需要注意的几点: iOS7之后才有该功能 需要 AVFoundation 库 AVSpeechSynthesizer: 语音合成器, 可以假想成一个可以说话的人, 是最主要的接口 AVSpeechSynthesisVoice: 可以假想成人的声音 AVSpeechUtterance: 可以假想成要说的一段话 二,代码示例, 播放语音 //语音播报