`
shuai1234
  • 浏览: 973512 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

UIImagePickerController

阅读更多

中期视讯 HD》ipad终于上线了,闲着无事,研究下UIImagePickerController的使用方法。

引用UIImagePickerController  需用到两个代理<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
用UIImagePickerController选择、显示图片或视频,主要注意UIImagePickerController几个属性的设置
一:UI 显示样式,显示的格式确定
1:sourceType
@property(nonatomic) UIImagePickerControllerSourceType sourceType
enum {
UIImagePickerControllerSourceTypePhotoLibrary,
UIImagePickerControllerSourceTypeCamera,
UIImagePickerControllerSourceTypeSavedPhotosAlbum
};
typedef NSUInteger UIImagePickerControllerSourceType;
sourceType用来确定用户界面显示的样式:
共三种格式(模拟器上的效果图)
UIImagePickerControllerSourceTypePhotoLibrary,
UIImagePickerController使用
UIImagePickerControllerSourceTypeCamera,

UIImagePickerControllerSourceTypeSavedPhotosAlbum

UIImagePickerController使用

为了区分是否支持所需引用的sourceType,一般要用到下面这个函数,以便确定sourceType。

+ (BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType

2:   mediaTypes
@property(nonatomic,copy) NSArray *mediaTypes
mediaTypes用来确定再picker里显示那些类型的多媒体文件,图片?视频?
+ (NSArray *)availableMediaTypesForSourceType:(UIImagePickerControllerSourceType)sourceType

 

UIImagePikerController的一些属性和方法:

 

@property(nonatomic)           UIImagePickerControllerSourceType     sourceType;                  

@property(nonatomic,copy)      NSArray                              *mediaTypes;                   //是否允许对获得的图片进行编辑,default value is NO.

@property(nonatomic)           BOOL                                  allowsEditing 

@property(nonatomic)           BOOL                                  allowsImageEditing 

//视频最大的时间长度

@property(nonatomic)           NSTimeInterval                        videoMaximumDuration

//拍摄照片的清晰度,只有在照相机模式下可用

 

enum {

    UIImagePickerControllerQualityTypeHigh = 0,       // highest quality 

    UIImagePickerControllerQualityType640x480 = 3,    // VGA quality

    UIImagePickerControllerQualityTypeMedium = 1,     // medium quality, suitable for transmission via Wi-Fi 

    UIImagePickerControllerQualityTypeLow = 2         // lowest quality, suitable for tranmission via cellular network

};

typedef NSUInteger UIImagePickerControllerQualityType;

默认UIImagePickerControllerQualityTypeMedium

 

@property(nonatomic)           UIImagePickerControllerQualityType    videoQuality

//是否显示照相机其他控件,默认yes

@property(nonatomic)           BOOL                                  showsCameraControls

//类似相框

@property(nonatomic,retain)    UIView                                *cameraOverlayView 

@property(nonatomic)           CGAffineTransform                     cameraViewTransform

//可以设置照相机的模式,照相还是录视频,默认照相模式。

 

enum {

    UIImagePickerControllerCameraCaptureModePhoto,

    UIImagePickerControllerCameraCaptureModeVideo

};

typedef NSUInteger UIImagePickerControllerCameraCaptureMode;

 

@property(nonatomic) UIImagePickerControllerCameraCaptureMode cameraCaptureMode

//设置哪个引用摄像头,前置还是后置摄像头

@property(nonatomic) UIImagePickerControllerCameraDevice      cameraDevice  

//设置闪光灯模式

enum {

    UIImagePickerControllerCameraFlashModeOff  = -1,

    UIImagePickerControllerCameraFlashModeAuto = 0,

    UIImagePickerControllerCameraFlashModeOn   = 1

};

typedef NSInteger UIImagePickerControllerCameraFlashMode;   

@property(nonatomic) UIImagePickerControllerCameraFlashMode   cameraFlashMode  


 

 

二:选取动作处理
UIImagePickerControllerDelegate 
通过代理来完成用户在选中图片,或者choose视频时的处理方式:
共有三个可选的代理方法

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

 

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo;

 

 

info中包括选取的照片,视频的主要信息
NSString *const UIImagePickerControllerMediaType;         选取的类型 public.image  public.movie
NSString *const UIImagePickerControllerOriginalImage;    修改前的UIImage object.
NSString *const UIImagePickerControllerEditedImage;      修改后的UIImage object.
NSString *const UIImagePickerControllerCropRect;           原始图片的尺寸NSValue object containing a CGRect data type
NSString *const UIImagePickerControllerMediaURL;          视频在文件系统中 的 NSURL地址
保存视频主要时通过获取其NSURL 然后转换成NSData

 

保存图片、视频的方法。

 

// Adds a photo to the saved photos album.  The optional completionSelector should have the form:

//  - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo;

UIKIT_EXTERN void UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo);

 

// Is a specific video eligible to be saved to the saved photos album? 

UIKIT_EXTERN BOOL UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(NSString *videoPath) __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_1);

 

// Adds a video to the saved photos album. The optional completionSelector should have the form:

//  - (void)video:(NSString *)videoPath didFinishSavingWithError:(NSError *)error contextInfo:(void //*)contextInfo;

UIKIT_EXTERN void UISaveVideoAtPathToSavedPhotosAlbum(NSString *videoPath, id completionTarget, SEL completionSelector, void *contextInfo) __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_1);


 

 

实例代码如下:

实例一:
- (void) pickImage: (id) sender
{
UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
        if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]){
     ipc.sourceType =  UIImagePickerControllerSourceTypePhotoLibrary;
      ipc.mediaTypes =[UIImagePickerController availableMediaTypesForSourceType:ipc.sourceType];   
        } 
ipc.delegate = self;
ipc.allowsImageEditing = NO;
[self presentModalViewController:ipc animated:YES]; 
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if ([mediaType isEqualToString:@"public.image"]){
// UIImage *selectedImage = [info objectForKey:UIImagePickerControllerOriginalImage];
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    NSLog(@"found an image");
[UIImageJPEGRepresentation(image, 1.0f) writeToFile:[self findUniqueSavePath] atomically:YES];
    SETIMAGE(image);
CFShow([[NSFileManager defaultManager] directoryContentsAtPath:[NSHomeDirectory() stringByAppendingString:@"/Documents"]]);
}
else if ([mediaType isEqualToString:@"public.movie"]){
NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
NSLog(@"found a video");
        NSData *webData = [NSData dataWithContentsOfURL:videoURL];
//NSData *video = [[NSString alloc] initWithContentsOfURL:videoURL];
[webData writeToFile:[self findUniqueMoviePath] atomically:YES];
CFShow([[NSFileManager defaultManager] directoryContentsAtPath:[NSHomeDirectory() stringByAppendingString:@"/Documents"]]);
// NSLog(videoURL);
}
[picker dismissModalViewControllerAnimated:YES];
}

 

实例二:主要介绍怎么修改获取图片的方法

加一个图片处理方法的类:

 

UIImagePickerController使用


UIImagePickerController使用

 

 

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)selectedImage editingInfo:(NSDictionary *)editingInfo {

 

CGFloat scale = 100/selectedImage.size.height;

 

UIImage *newpetimage = [selectedImage scaleToSize:CGSizeMake(selectedImage.size.width*scale, selectedImage.size.height*scale)];

NSLog(@"imagew = %f,h = %f",newpetimage.size.width,newpetimage.size.height);

 

}

 

最后感谢cctv,mtv还有国庆的倾力支持,谢谢。

分享到:
评论
2 楼 松花江以南 2012-02-08  
学习了。     
1 楼 舍得333 2011-08-30  
写的太详细了,支持了

相关推荐

    自定义UIImagePickerController的拍照页面

    在iOS开发中,`UIImagePickerController`是苹果提供的一种用于在应用中集成图片和视频选择功能的内置组件。然而,有时为了满足特定的用户界面需求或增强用户体验,开发者可能希望自定义这个选择器的外观和行为。本篇...

    UIImagePickerController之打开图片库和相机选择图片修改头像

    这个过程涉及到苹果的`UIImagePickerController`组件,它是一个内置的UI控制器,专门用于处理图像选择和捕获任务。在本文中,我们将深入探讨如何使用`UIImagePickerController`来实现从图片库或相机中选取图片,并...

    自定义UIImagePickerController视频录制界面

    在iOS开发中,`UIImagePickerController` 是苹果提供的一种用于选择或录制媒体文件的内置控制器,它让用户能够方便地访问设备的相机和照片库。本篇我们将深入探讨如何自定义`UIImagePickerController`,实现视频录制...

    UIImagePickerController和MPMoviePlayerController的使用

    在iOS开发中,`UIImagePickerController` 和 `MPMoviePlayerController` 是两个非常重要的组件,它们分别用于处理图片选取和视频播放的场景。这两个组件是苹果官方提供的原生UI控件,可以方便开发者快速集成图片和...

    使用UIImagePickerController时3DTouch引起的Crash问题的解决

    在iOS开发过程中,`UIImagePickerController` 是苹果提供的一种用于在应用中集成图像选择功能的类,用户可以使用它来从照片库中选取图片或录制视频。然而,在涉及到3DTouch(也被称为压力感应触摸)功能时,可能会...

    UIImagePickerController的使用

    UIImagePickerController是iOS平台上用于选择或拍摄图片和视频的内置组件,它是UIController的一个子类,广泛应用于需要用户输入图像数据的应用场景。在这个实例中,我们将深入探讨如何使用UIImagePickerController...

    UIImagePickerController学习

    UIImagePickerController是iOS平台上用于选择或拍摄图片和视频的内置组件,它是UIController的一个子类,广泛应用于各种需要用户从设备相册选取或者直接通过摄像头拍照的场景。在这个学习项目中,我们将深入探讨如何...

    swift-QBImagePicker一个具有多个选择支持的UIImagePickerController的克隆

    Swift-QBImagePicker是一个强大的iOS开发库,它提供了一个与苹果原生的UIImagePickerController类似但功能更丰富的图片选择器。这个库特别适用于那些需要用户能够一次性选择多张图片的应用场景,而...

    IOS UIImagePickerController

    在iOS开发中,`UIImagePickerController`是苹果提供的一种用于在应用中集成图像和视频选择功能的类。这个组件允许用户从设备的照片库中选取图片或视频,或者直接通过摄像头拍摄新的照片和录制视频。下面我们将详细...

    swift-Tatsi一个UIImagePickerController替代拥有更多的选项

    Tatsi 一个UIImagePickerController替代拥有更多的选项,并能够选择多个图像/或视频

    GKImagePicker, 为UIImagePickerController启用自定义裁剪矩形.zip

    GKImagePicker, 为UIImagePickerController启用自定义裁剪矩形 GKImagePicker曾经想要UIImagePickerController的定制裁剪区域? 现在你可以用 GKImagePicker 了。 只要设置你定制的裁剪区域就可以了。 只有 4行代码...

    iOS UIImagePickerController 详细使用文档

    在深入探讨iOS中的UIImagePickerController之前,我们首先应当理解其核心功能与使用场景。UIImagePickerController是iOS SDK中的一个类,它提供了一个标准界面,允许用户选择或拍摄照片、视频,并将其集成到应用中。...

    UIImagePickerController拍照与摄像

    UIImagePickerController是iOS平台上用于集成到应用中的一个核心组件,它允许用户通过拍照或从相册选择图片和视频。这个组件是苹果提供的UI框架的一部分,特别设计用于处理媒体输入,特别是对于那些需要用户交互来...

    ios-使用swift语言编写的改变用户头像的demo(UIImagePIckerController).zip

    这个"ios-使用swift语言编写的改变用户头像的demo(UIImagePickerController).zip"是一个示例项目,它演示了如何使用UIImagePickerController来实现用户头像的更换功能。UIImagePickerController是iOS SDK提供的一...

    IOS UIImagePickerController从拍照、图库、相册获取图片

    IOS UIImagePickerController从拍照、图库、相册获取图片 iOS 获取图片有三种方法: 1. 直接调用摄像头拍照 2. 从相册中选择 3. 从图库中选择 UIImagePickerController 是系统提供的用来获取图片和视频的接口; 用...

    iOS中UIImagePickerController图片选取器的用法小结

    在iOS开发中,`UIImagePickerController` 是一个至关重要的组件,它允许用户从相册中选取图片或视频,甚至直接使用相机拍摄。以下是对`UIImagePickerController`的详细解析和使用方法。 首先,`...

    Tatsi:UIImagePickerController的直接替代品,可以选择多个图像和_或视频

    UIImagePickerController的直接替代品,具有更多选项以及选择多个图像和/或视频的功能。 屏幕截图 介绍 嗨,我们很。 我们为iOS Reddit客户端创建了一个可定制的图像选择器 。 UIImagePickerController仅支持一次...

    Andy0570#iOS-Samples#UIImagePickerController 的一般用法1

    第一步:创建控制器,设置委托,遵守协议 第二步:在你需要的时候显示 UIImagePickerController 第三步:实现委托方法

Global site tag (gtag.js) - Google Analytics