首页 > 技术文章 > UIKit - UIImage 详解

loying 2015-12-27 11:26 原文

UIImage 是最常用的图像数据类型,通常搭配UIImageView一起使用。

打开xcode里面的UIImage.h ,可以看到常用的方法:

UIImagePNGRepresentation() 把一个UIImage 转成 NSdata。(里面的数据是png)

UIImageJPEGRepresentation() 把一个UIImage 转成 NSData。(里面的数据是jpeg)

 

+ (nullable UIImage *)imageNamed:(NSString *)name;            通过name返回一张图片;

+ (nullable UIImage *)imageWithContentsOfFile:(NSString *)path;    通过path返回一张图片;

+ (nullable UIImage *)imageWithData:(NSData *)data;         通过data返回一张图片;

 

 

 

+ (nullable UIImage *)animatedImageNamed:(NSString *)name duration:(NSTimeInterval)duration;

+ (nullable UIImage *)animatedResizableImageNamed:(NSString *)name capInsets:(UIEdgeInsets)capInsets duration:(NSTimeInterval)duration;

+ (nullable UIImage *)animatedResizableImageNamed:(NSString *)name capInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode duration:(NSTimeInterval)duration;

+ (nullable UIImage *)animatedImageWithImages:(NSArray<UIImage *> *)images duration:(NSTimeInterval)duration;

这四个都是返回动态图片。

 

 

 

- (UIImage *)imageWithAlignmentRectInsets:(UIEdgeInsets)alignmentInsets;   这个是用来做九宫格图片。

 

 

从iOS中选择图片  可以使用  UIImagePickerController;

把照片存入库       可以使用  UIImageWriteToSavedPhotosAlbum。

这些常用方法,已经可以满足绝大部分需求。

 

下面举一个UIImagePickerController的例子:

 

//当选择一张图片后进入这里

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

 

{

    NSString *type = [info objectForKey:UIImagePickerControllerMediaType];

    

    //当选择的类型是图片

    if ([type isEqualToString:@"public.image"])

    {

        //先把图片转成NSData

        UIImage* image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

        NSData *data;

        if (UIImagePNGRepresentation(image) == nil)

        {

            data = UIImageJPEGRepresentation(image, 1.0);

        }

        else

        {

            data = UIImagePNGRepresentation(image);

        }

        

        //图片保存的路径

        //这里将图片放在沙盒的documents文件夹中

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

        

        //文件管理器

        NSFileManager *fileManager = [NSFileManager defaultManager];

        

        //把刚刚图片转换的data对象拷贝至沙盒中 并保存为image.png

        [fileManager createDirectoryAtPath:DocumentsPath withIntermediateDirectories:YES attributes:nil error:nil];

        [fileManager createFileAtPath:[DocumentsPath stringByAppendingString:@"/image.png"] contents:data attributes:nil];

        

        //得到选择后沙盒中图片的完整路径

        NSString* filePath = [[NSString alloc]initWithFormat:@"%@%@",DocumentsPath,  @"/image.png"];

        LYLog(@"file path :%@", filePath);

         

        //关闭相册界面

        [picker dismissViewControllerAnimated:YES completion:nil];

 

//        self.myImageView.image = image;

 

        

    }

}

 

 

如果还有不了解的,可以参考 http://www.cocoachina.com/ios/20151207/14376.html 。

推荐阅读