相机的调用以及从相册中选取图片

来源:互联网 发布:kplayer mac 编辑:程序博客网 时间:2024/05/17 02:38

需要添加的代理


@interface ViewController :UIViewController<UIActionSheetDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate>



一、点击调取相机的按钮

- (void)chooseImage:(id)sender {

    

    UIActionSheet *sheet;

    

    //判断是否支持相机

    if([UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])

       {

           sheet  = [[UIActionSheetalloc] initWithTitle:@"选择"delegate:selfcancelButtonTitle:nildestructiveButtonTitle:@"取消"otherButtonTitles:@"拍照",@"从相册选择",nil];

       }

   else {

        

        sheet = [[UIActionSheetalloc] initWithTitle:@"选择"delegate:selfcancelButtonTitle:nildestructiveButtonTitle:@"取消"otherButtonTitles:@"从相册选择",nil];

    }

    

    sheet.tag =255;

    

    [sheetshowInView:self.view];

    

}


二、底部弹出框事件

#pragma mark - actionsheet delegate

-(void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex

{

   if (actionSheet.tag ==255) {

        

       NSUInteger sourceType = 0;

        

        // 判断是否支持相机

        if([UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {

            

           switch (buttonIndex) {

               case 0:

                   // 取消

                   return;

               case 1:

                   // 相机

                    sourceType = UIImagePickerControllerSourceTypeCamera;

                   break;

                    

               case 2:

                   // 相册

                    sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

                   break;

            }

        }

       else {

           if (buttonIndex == 0) {

                

               return;

            }else {

                sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;

            }

        }

        // 跳转到相机或相册页面

        UIImagePickerController *imagePickerController = [[UIImagePickerControlleralloc] init];

        

        imagePickerController.delegate =self;

        

        imagePickerController.allowsEditing =YES;

        

        imagePickerController.sourceType = sourceType;

        

        [selfpresentViewController:imagePickerController animated:YES completion:^{}];

       

    }

}



#pragma mark - image picker delegte

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

{

[picker dismissViewControllerAnimated:YEScompletion:^{}];

    

    UIImage *image = [infoobjectForKey:UIImagePickerControllerOriginalImage];

    

    [selfsaveImage:imagewithName:@"currentImage.png"];

    

    NSString *fullPath = [[NSHomeDirectory()stringByAppendingPathComponent:@"Documents"]stringByAppendingPathComponent:@"currentImage.png"];

    

   UIImage *savedImage = [[UIImagealloc] initWithContentsOfFile:fullPath];

    

    isFullScreen =NO;

    [self.imageViewsetImage:savedImage];

    

   self.imageView.tag =100;

    

}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker

{

[selfdismissViewControllerAnimated:YEScompletion:^{}];

}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

    

    isFullScreen = !isFullScreen;

   UITouch *touch = [touches anyObject];

    

   CGPoint touchPoint = [touch locationInView:self.view];

    

   CGPoint imagePoint = self.imageView.frame.origin;

    //touchPoint.x touchPoint.y 就是触点的坐标

    

    // 触点在imageView内,点击imageView放大,再次点击时缩小

   if(imagePoint.x <= touchPoint.x && imagePoint.x +self.imageView.frame.size.width >=touchPoint.x && imagePoint.y <=  touchPoint.y && imagePoint.y+self.imageView.frame.size.height >= touchPoint.y)

    {

        // 设置图片放大动画

        [UIViewbeginAnimations:nilcontext:nil];

       // 动画时间

        [UIViewsetAnimationDuration:1];

        

       if (isFullScreen) {

           // 放大尺寸

            

           self.imageView.frame =CGRectMake(0,0, 320, 480);

        }

       else {

           // 缩小尺寸

           self.imageView.frame =CGRectMake(50,65, 90, 115);

        }

        

        // commit动画

        [UIViewcommitAnimations];

        

    }

    

}


#pragma mark - 保存图片至沙盒

- (void) saveImage:(UIImage *)currentImage withName:(NSString *)imageName

{

    

   NSData *imageData = UIImageJPEGRepresentation(currentImage, 0.5);

    // 获取沙盒目录

    

    NSString *fullPath = [[NSHomeDirectory()stringByAppendingPathComponent:@"Documents"]stringByAppendingPathComponent:imageName];

    

    // 将图片写入文件

    

    [imageDatawriteToFile:fullPath atomically:NO];

}






0 0