照相功能

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

#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.isEditing = 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];   //存储不可以过快
    }
时间: 2024-08-28 09:41:03

照相功能的相关文章

Camera实现照相功能的关键步骤

Camera类用于设置图像采集相关设置,开始/停止预览,拍照,检索编码视频帧.该类是 Camera 服务的客户端,管理真实的 camera 硬件. 要访问camera设备,必须在 Android Manifest中声明 CAMERA 权限.还要保证包含 <uses-feature> manifest 元素声明你的应用程序使用的相机功能.例如,如果是使用 camera 和 auto-focus(自动对焦)功能,你的 Manifest 中应该包含以下: <uses-permission an

默认手机照相功能

下面是主要代码: - (void) addPicEvent {     //先设定sourceType为相机,然后判断相机是否可用(ipod)没相机,不可用将sourceType设定为相片库     UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;     if (![UIImagePickerController isSourceTypeAvailable: UIIma

Android 照相功能

使用内置的Camera 应用程序捕获图像            探索Android 所提供的内置功能,内置的图像捕获与存储功能为Android 上所有媒体功能提供了一个很好的切入点,为我们在以后的章节中处理音频和视频奠定了基础.            现在介绍如何利用内置的Camera(摄像头)应用程序.    package com.example; import java.io.File; import android.app.Activity; import android.content

关于调用Android照相功能获取图片

最近在项目中调用相机,使用了别人写好的文件,但发现获取的照片没真正使用系统照相拍照再查看那么清晰,于是研究了一下,发现通常调用照相功能获取的图片都是被压缩的,如果要获取原照,那得保存后在获取.在网上找到一个博主写了两篇文章就此问题进行详细讲解,可看起文章学习: Android开发之获取相册照片和获取拍照照片 Android开发之获取相册照片和获取拍照照片二

CameraAPI中的 自定义照相功能

前几天的项目需要使用CameraAPI自己定义照相机,之前用过的二维码也要自己写底层代码,于是总结一下使用CameraAPI的几点事项.现在由于JDK7.0及其以上版本的官方文档已经不再推荐使用camera包而是camera2包,但这次还是先讲camera的使用,至于camera2等以后再讲. 首先是添加照相机权限,在清单文件中必须添加摄像头硬件权限和使用功能,其中功能可以根据项目需求选择性放入. 1 <uses-permission android:name="android.permi

android 实现照相功能 照片存放在SID卡中,将照片显示在Image中

protected static final int CAMERA_RESULT = 0; private String fileName; private Button takePhotoBn; private String imageFilePath; private ImageView imv; @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { // TOD

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

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

第十篇 面向对象的程序设计

第十篇 面向对象的程序设计 阅读目录 一 面向对象的程序设计的由来 二 什么是面向对象的程序设计及为什么要有它 三 类和对象 3.1 什么是对象,什么是类 3.2 类相关知识 3.3 对象相关知识 3.4 对象之间的交互 3.5 类名称空间与对象/实例名称空间 3.6 小结 四 继承与派生 4.1 什么是继承 4.2 继承与抽象(先抽象再继承) 4.3 继承与重用性 4.4 组合与重用性 4.5 接口与归一化设计 4.6 抽象类 4.7 继承实现的原理(继承顺序) 4.8 子类中调用父类方法 五

Android权限列表permission说明

网络上不乏android权限列表,但是很少有将列表和使用方法放在一起的,所以特此总结一下 需要在AndroidManifest.xml中定义相应的权限(以获取internet访问权限为例),如下: < uses-permission   android:name ="android.permission.INTERNET"  /> 注意在<application>也可以定义INTERNET权限,如下: < application   android:per