zoukankan      html  css  js  c++  java
  • ios调用摄像头

    //
    // CameraViewController.m
    // Camera
    //
    // Created by Dave Mark on 12/16/10.
    // Copyright 2010 __MyCompanyName__. All rights reserved.
    //

    #import "CameraViewController.h"
    #import <MobileCoreServices/UTCoreTypes.h>

    @interface CameraViewController ()
    static UIImage *shrinkImage(UIImage *original, CGSize size);
    - (void)updateDisplay;
    - (void)getMediaFromSource:(UIImagePickerControllerSourceType)sourceType;
    @end

    @implementation CameraViewController
    @synthesize imageView;
    @synthesize takePictureButton;
    @synthesize moviePlayerController;
    @synthesize image;
    @synthesize movieURL;
    @synthesize lastChosenMediaType;

    - (void)viewDidLoad {
    if (![UIImagePickerController isSourceTypeAvailable:
    UIImagePickerControllerSourceTypeCamera]) {
    takePictureButton.hidden = YES;
    }
    imageFrame = imageView.frame;
    }

    - (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self updateDisplay];
    }

    - (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
    }

    - (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
    self.imageView = nil;
    self.takePictureButton = nil;
    self.moviePlayerController = nil;
    [super viewDidUnload];
    }

    - (void)dealloc {
    [imageView release];
    [takePictureButton release];
    [moviePlayerController release];
    [image release];
    [movieURL release];
    [lastChosenMediaType release];
    [super dealloc];
    }

    - (IBAction)shootPictureOrVideo:(id)sender {
    [self getMediaFromSource:UIImagePickerControllerSourceTypeCamera];
    }

    - (IBAction)selectExistingPictureOrVideo:(id)sender {
    [self getMediaFromSource:UIImagePickerControllerSourceTypePhotoLibrary];
    }

    #pragma mark UIImagePickerController delegate methods
    - (void)imagePickerController:(UIImagePickerController *)picker
    didFinishPickingMediaWithInfo:(NSDictionary *)info {
    self.lastChosenMediaType = [info objectForKey:UIImagePickerControllerMediaType];
    if ([lastChosenMediaType isEqual:(NSString *)kUTTypeImage]) {
    UIImage *chosenImage = [info objectForKey:UIImagePickerControllerEditedImage];
    UIImage *shrunkenImage = shrinkImage(chosenImage, imageFrame.size);
    self.image = shrunkenImage;
    } else if ([lastChosenMediaType isEqual:(NSString *)kUTTypeMovie]) {
    self.movieURL = [info objectForKey:UIImagePickerControllerMediaURL];
    }
    [picker dismissModalViewControllerAnimated:YES];
    }

    - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
    [picker dismissModalViewControllerAnimated:YES];
    }

    #pragma mark -
    static UIImage *shrinkImage(UIImage *original, CGSize size) {
    CGFloat scale = [UIScreen mainScreen].scale;
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

    CGContextRef context = CGBitmapContextCreate(NULL, size.width * scale,
    size.height * scale, 8, 0, colorSpace, kCGImageAlphaPremultipliedFirst);
    CGContextDrawImage(context,
    CGRectMake(0, 0, size.width * scale, size.height * scale),
    original.CGImage);
    CGImageRef shrunken = CGBitmapContextCreateImage(context);
    UIImage *final = [UIImage imageWithCGImage:shrunken];

    CGContextRelease(context);
    CGImageRelease(shrunken);

    return final;
    }

    - (void)updateDisplay {
    if ([lastChosenMediaType isEqual:(NSString *)kUTTypeImage]) {
    imageView.image = image;
    imageView.hidden = NO;
    moviePlayerController.view.hidden = YES;
    } else if ([lastChosenMediaType isEqual:(NSString *)kUTTypeMovie]) {
    [self.moviePlayerController.view removeFromSuperview];
    self.moviePlayerController = [[[MPMoviePlayerController alloc]
    initWithContentURL:movieURL] autorelease];
    moviePlayerController.view.frame = imageFrame;
    moviePlayerController.view.clipsToBounds = YES;
    [self.view addSubview:moviePlayerController.view];
    imageView.hidden = YES;
    }
    }

    - (void)getMediaFromSource:(UIImagePickerControllerSourceType)sourceType {
    NSArray *mediaTypes = [UIImagePickerController
    availableMediaTypesForSourceType:sourceType];
    if ([UIImagePickerController isSourceTypeAvailable:
    sourceType] && [mediaTypes count] > 0) {
    NSArray *mediaTypes = [UIImagePickerController
    availableMediaTypesForSourceType:sourceType];
    UIImagePickerController *picker =
    [[UIImagePickerController alloc] init];
    picker.mediaTypes = mediaTypes;
    picker.delegate = self;
    picker.allowsEditing = YES;
    picker.sourceType = sourceType;
    [self presentModalViewController:picker animated:YES];
    [picker release];
    }
    else {
    UIAlertView *alert = [[UIAlertView alloc]
    initWithTitle:@"Error accessing media"
    message:@"Device doesn’t support that media source."
    delegate:nil
    cancelButtonTitle:@"Drat!"
    otherButtonTitles:nil];
    [alert show];
    [alert release];
    }
    }

    @end

  • 相关阅读:
    hdu 1455 N个短木棒 拼成长度相等的几根长木棒 (DFS)
    hdu 1181 以b开头m结尾的咒语 (DFS)
    hdu 1258 从n个数中找和为t的组合 (DFS)
    hdu 4707 仓鼠 记录深度 (BFS)
    LightOJ 1140 How Many Zeroes? (数位DP)
    HDU 3709 Balanced Number (数位DP)
    HDU 3652 B-number (数位DP)
    HDU 5900 QSC and Master (区间DP)
    HDU 5901 Count primes (模板题)
    CodeForces 712C Memory and De-Evolution (贪心+暴力)
  • 原文地址:https://www.cnblogs.com/mfryf/p/2377949.html
Copyright © 2011-2022 走看看