iOS--OC语言相机封装----包含保存与读取

来源:互联网 发布:mac毛笔书法字体下载 编辑:程序博客网 时间:2024/06/08 16:52

#import <UIKit/UIKit.h>


typedef  NS_ENUM(NSUInteger,imagePickerStyle){

    ImagePickerStyleCamera,

    ImagePickerStylePhotoLibrary

};


@protocol WPhotoImagePickerViewControllerDelegate <NSObject>


-(void)imageChooseFinish:(UIImage *)image;


@end


/**

 *  保存成功回调

 *

 *  @param success 保存成功的block

 */

typedef void(^resultBlock)(BOOL success);


@interface WPhotoImagePickerViewController :UIImagePickerController


/**

 *  SZKImagePickerVCDelegate

 */

@property(nonatomic,assign)id<WPhotoImagePickerViewControllerDelegate>WPhotoImageDelegate;


/**

 *  初始化SZKImagePicker

 *

 *  @param style 打开照相机或者图库

 *

 *  @return  初始化SZKImagePicker

 */

-(instancetype)initWithImagePickerStyle:(imagePickerStyle)style;

/**

 *  保存图片到沙盒

 *

 *  @param image     要保存的图片

 *  @param imageName 保存的图片名称

 *  @param block     保存成功的值

 */

+(void)saveImageToSandbox:(UIImage *)image

             andImageNage:(NSString *)imageName

           andResultBlock:(resultBlock)block;

/**

 *  沙盒中获取到的照片

 *

 *  @param imageName 读取的照片名称

 *

 *  @return 从沙盒读取到的照片

 */

+(UIImage *)loadImageFromSandbox:(NSString *)imageName;

/**

 *  根据文件获取沙盒路径

 *

 *  @param fileName 文件名称

 *

 *  @return 文件在沙盒中的路径

 */

+(NSString *)filePath:(NSString *)fileName;



@end





















#import "WPhotoImagePickerViewController.h"


@interface WPhotoImagePickerViewController ()<UIImagePickerControllerDelegate>


@end


@implementation WPhotoImagePickerViewController


-(instancetype)initWithImagePickerStyle:(imagePickerStyle)style {

    self=[superinit];

    if (self) {

        if (style==ImagePickerStyleCamera) {

            self.sourceType=UIImagePickerControllerSourceTypeCamera;

        }elseif(style==ImagePickerStylePhotoLibrary) {

            self.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;

        }

    }

    returnself;

}

- (void)viewDidLoad {

    [superviewDidLoad];

    

    self.allowsEditing=YES;

    self.delegate     =self;

    

    self.view.backgroundColor=[UIColorcolorWithWhite:0.875alpha:1.000];

    

}

#pragma mark---选取照片

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {

    //界面返回

    [picker dismissViewControllerAnimated:YEScompletion:nil];

    //获取编辑之后的图片

    UIImage *editedImage=[infoobjectForKey:UIImagePickerControllerEditedImage];

    //将获取的image传入代理方法中

    [self.WPhotoImageDelegateimageChooseFinish:editedImage];

}


#pragma mark----将照片保存到沙盒

+(void)saveImageToSandbox:(UIImage *)image andImageNage:(NSString *)imageName andResultBlock:(resultBlock)block {

    //高保真压缩图片,此方法可将图片压缩,但是图片质量基本不变,第二个参数为质量参数

    NSData *imageData=UIImageJPEGRepresentation(image,0.5);

    //将图片写入文件

    NSString *filePath=[selffilePath:imageName];

    //是否保存成功

    BOOL result=[imageDatawriteToFile:filePath atomically:YES];

    //保存成功传值到blcok

    if (result) {

        block(result);

    }

}


#pragma mark----从沙盒中读取照片

+(UIImage *)loadImageFromSandbox:(NSString *)imageName {

    //获取沙盒路径

    NSString *filePath=[selffilePath:imageName];

    //根据路径读取image

    UIImage *image=[UIImageimageWithContentsOfFile:filePath];

    

    return image;

}

#pragma mark----获取沙盒路径

+(NSString *)filePath:(NSString *)fileName {

    //获取沙盒目录

    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);

    //保存文件名称

    NSString *filePath=[paths[0]stringByAppendingPathComponent:fileName];

    

    NSLog(@"%@",filePath);

    

    return filePath;

}




@end











原创粉丝点击