文档章节

照相功能

Ethan-GOGO
 Ethan-GOGO
发布于 2015/09/02 15:49
字数 629
阅读 67
收藏 0

调用相机并且上传照片的方法

#import "ViewController.h"
#import "AFNetworking.h"
@interface ViewController () <UIActionSheetDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate>
 
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
 
@end
 
@implementation ViewController
 
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}
 
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"请选择照片" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"相机",@"相册", nil];
    /**
     *  window代表着最高处,所有能看到的view,后面都是window。
     *  当push相机控制器的时候,self.view就自动移除了。而当dismiss控制器的时候,因为self.view移除了,所有sheet无法寄居在view的上面,而固定在self.view.window,就可以保证,sheet一定在view视图上
     */
    [sheet showInView:self.view.window];
     
}
 
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
     
    ipc.delegate = self;
    ipc.allowsEditing = YES;  //相片是否可编辑 
    switch (buttonIndex) {
        case 0:
            if (![UIImagePickerController isSourceTypeAvailable:
                  UIImagePickerControllerSourceTypeCamera]) return;
                ipc.sourceType = UIImagePickerControllerSourceTypeCamera;
            break;
        case 1:
            if (![UIImagePickerController isSourceTypeAvailable:
                  UIImagePickerControllerSourceTypePhotoLibrary]) return;
                ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
            break;
        
        default:
            return;
            break;
    }
    [self presentViewController:ipc animated:YES completion:nil];
}
 
/**
 *  选择完照片后调用的方法
 *
 *
 *  @param info   所有相片的信息都在这个字典
 */
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [self dismissViewControllerAnimated:YES completion:nil];
     
    //从字典key获取image的地址
    UIImage *image = info[UIImagePickerControllerOriginalImage];
     
    self.imageView.image = image;
     
     
}
 
- (IBAction)upload:(UIButton *)sender {
     
    AFHTTPRequestOperationManager *mrg = [[AFHTTPRequestOperationManager alloc] init];
     
    NSMutableDictionary *params = [NSMutableDictionary dictionary];
    params[@"username"] = @"123";
 
     
     NSString *url = @"http://192.168.130.110:8080/MJServer/upload";
     
    /**
     *  上传时候调用的方法
     *
     *  params   post的参数,字典
     *  formData formData是post上去的数据
     *  name     服务器接受文件的名字
     *  fileName 文件的名字
     */
    [mrg POST:url parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        
        NSData *data = UIImageJPEGRepresentation(self.imageView.image, 1.0);
        [formData appendPartWithFileData:data name:@"file" fileName:@"1.jpg" mimeType:@"image/jpeg"];
         
    } success:^(AFHTTPRequestOperation *operation, id responseObject) {
         
        NSLog(@"上传成功");
         
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        NSLog(@"上传失败");
    }];
 
}
@end


2 手动存储相片到相册

    for (int i = 0; i<=9; i++) {
        UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"00%d.png", i]];
        UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
        NSLog(@"%@", image);
        [NSThread sleepForTimeInterval:1];   //存储不可以过快
    }


3 按钮文字设置成中文

info.plist 中添加Localized resources can be mixed 设置为YES


4 图片选择控制器

当想自己写一个图片选择控制器的时候,需要利用AssetsLibrary.framework,利用这个框架获得所有的相册图片


5 其他

switch (buttonIndex) {
        case 0://照相机
        { UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
            imagePicker.delegate = self;
            imagePicker.allowsEditing = YES;
            imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
            imagePicker.mediaTypes =  [[NSArray alloc] initWithObjects: (NSString *) kUTTypeImage, nil];
            [self presentViewController:imagePicker animated:YES completion:nil];
            
        }
            break;
        case 1://摄像机
        {
            UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
            imagePicker.delegate = self;
            imagePicker.allowsEditing = YES;
            imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
            imagePicker.mediaTypes = [[NSArray alloc] initWithObjects: (NSString *) kUTTypeMovie, nil];
            imagePicker.videoQuality = UIImagePickerControllerQualityTypeLow;
           [self presentViewController:imagePicker animated:YES completion:nil];
            
        }
            break;
        case 2://本地相簿
        {
            UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
            imagePicker.delegate = self;
            imagePicker.allowsEditing = YES;
            imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
            imagePicker.mediaTypes =  [[NSArray alloc] initWithObjects: (NSString *) kUTTypeImage, nil];
           [self presentViewController:imagePicker animated:YES completion:nil];
        }
            break;
        case 3://本地视频
        {
            UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
            imagePicker.delegate = self;
            imagePicker.allowsEditing = YES;
            imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
            imagePicker.mediaTypes =  [[NSArray alloc] initWithObjects: (NSString *) kUTTypeMovie, nil];
           [self presentViewController:imagePicker animated:YES completion:nil];
            
        }


© 著作权归作者所有

Ethan-GOGO
粉丝 14
博文 174
码字总数 82033
作品 0
广州
私信 提问
Android 手机摄像头编程入门

智能手机中的摄像头和普通手机中的摄像头最大的区别在于,智能机上的摄像头可以由程序员写程序控制,做一些有趣的应用譬如,画中画,做一些有用的应用譬如二维码识别,等等。本讲打算通过一个...

无鸯
2011/09/09
8K
4
Android:Intent与IntentFilter 解析

说明: 一直不明白IntentFilter的作用,于是上网找资料。发现大家的说明都很难明白,没有举例说明。 对于IntentFilter的说明,我引用 h3c4lenovo 的:Android Intent action有什么用??? ...

岑浩源
2012/11/19
3.2K
1
关于调用Android照相功能获取图片

最近在项目中调用相机,使用了别人写好的文件,但发现获取的照片没真正使用系统照相拍照再查看那么清晰,于是研究了一下,发现通常调用照相功能获取的图片都是被压缩的,如果要获取原照,那得...

tyronejw
2015/08/18
56
0
Android图形---OpenGL(四)

本文译自:http://developer.android.com/guide/topics/graphics/opengl.html 在OpenGL ES 2.0中的投影和照相视图 在ES 2.0的API中,首先要通过把一个矩阵成员添加给图形对象顶部的着色器(V...

长平狐
2012/10/16
155
0
UIMagePickerController--PKImagePicker

PKImagePicker 是 UIMagePickerController 替代品,能很简单的切换相册和照相功能。

叶秀兰
2014/07/25
293
0

没有更多内容

加载失败,请刷新页面

加载更多

Java FOR-EACH循环

FOR-EACH循环使得代码更加的简短,也让代码更加易懂,其实他并没有加入什么新的功能。他的功能完全可以用简单的FOR循环代替。 for-each的用法: int a[] = {1,2,3,4,5,6} for(int s:a){ Syst...

无名氏的程序员
32分钟前
3
0
使用HTML5的History API

本文转载于:专业的前端网站➣使用HTML5的History API   HTML5 History API提供了一种功能,能让开发人员在不刷新整个页面的情况下修改站点的URL。这个功能很有用,例如通过一段JavaScript代...

前端老手
34分钟前
4
0
JAVA 编写redisUtils工具类,防止高并发获取缓存出现并发问题

import lombok.extern.slf4j.Slf4j;import org.springframework.data.redis.core.BoundHashOperations;import org.springframework.data.redis.core.BoundValueOperations;import org.......

huangkejie
今天
7
0
JMM内存模型(一)&volatile关键字的可见性

在说这个之前,我想先说一下计算机的内存模型: CPU在执行的时候,肯定要有数据,而数据在内存中放着呢,这里的内存就是计算机的物理内存,刚开始还好,但是随着技术的发展,CPU处理的速度越...

走向人生巅峰的大路
今天
101
0
你对AJAX认知有多少(2)?

接着昨日内容,我们几天继续探讨ajax的相关知识点 提到ajax下面几个问题又是必须要了解的啦~~~ 8、在浏览器端如何得到服务器端响应的XML数据。 通过XMLHttpRequest对象的responseXMl属性 9、 ...

理性思考
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部