首页 > 代码库 > iOS开发之保存图片到Documents目录及PNG,JPEG格式互相转换

iOS开发之保存图片到Documents目录及PNG,JPEG格式互相转换

先看下面的代码:

 

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

    NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];

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

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

        NSData *data;

        if (UIImagePNGRepresentation(image) == nil) {

            data =http://www.mamicode.com/ UIImageJPEGRepresentation(image1);

        } else {

            data =http://www.mamicode.com/ UIImagePNGRepresentation(image);

        }

        

        NSFileManager *fileManager = [NSFileManager defaultManager];

        NSString *filePath = [NSString stringWithString:[self getPath:@"image1"]];         //将图片存储到本地documents

 

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

         [fileManager createFileAtPath:[filePath stringByAppendingString:@"/image.png"contents:dataattributes:nil];

        

        UIImage *editedImage = [[UIImage allocinit];

        editedImage = image;

        CGRect rect = CGRectMake(006496);

        UIGraphicsBeginImageContext(rect.size);

        [editedImage drawInRect:rect];

        editedImage = UIGraphicsGetImageFromCurrentImageContext();

        

        UIButton *imageButton = [UIButton buttonWithType:UIButtonTypeCustom];

        imageButton.frame = CGRectMake(10106496);

        [imageButton setImage:editedImage forState:UIControlStateNormal];

        [self.view addSubview:imageButton];

        [imageButton addTarget:self action:@selector(imageAction:)forControlEvents:UIControlEventTouchUpInside];

 

        [ipc dismissModalViewControllerAnimated:YES];

    } else {

        NSLog(@"MEdia");

    }

    

上面的代码是当从相册里面选取图片之后保存到本地程序沙盒,在上面我们得到的图片中不能够得到图片名字,以及不清楚图片格式,所以这个时候我们需要将其转换成NSdata二进制存储,

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

 

NSData *data;

        if (UIImagePNGRepresentation(image) == nil) {

            data =http://www.mamicode.com/ UIImageJPEGRepresentation(image1);

        } else {

            data =http://www.mamicode.com/ UIImagePNGRepresentation(image);

        }

UIImagePNGRepresentation转换PNG格式的图片为二进制,如果图片的格式为JPEG则返回nil;

 [fileManager createFileAtPath:[filePath stringByAppendingString:@"/image.png"contents:data attributes:nil];    将图片保存为PNG格式

 [fileManager createFileAtPath:[filePath stringByAppendingString:@"/image.jpg"contents:data attributes:nil];   将图片保存为JPEG格式

 

我们也可以写成下面的格式存储图片

NSString *pngImage = [filePath stringByAppendingPathComponent:@"Documents/image.png"];

NSString *jpgImage = [filePath stringByAppendingPathComponent:@"Documents/image.jpg"];

 

[data writeToFile:pngImage atomically:YES];

[data writeToFile:jpgImage atomically:YES];