图片处理:压缩、存储、读取

来源:互联网 发布:vga矩阵切换器标准进出 编辑:程序博客网 时间:2024/05/19 18:15

使用UIImagePickerController和用户交互,需要实现2个协议<UIImagePickerControllerDelegate,UINavigationControllerDelegate>。


设置imagePicker的图片来源为UIImagePickerControllerSourceTypePhotoLibrary,表明当前图片的来源为相册

#pragma mark 从用户相册获取活动图片 - (void)pickImageFromAlbum {    imagePicker = [[UIImagePickerController alloc] init];    imagePicker.delegate = self;    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;    imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;    imagePicker.allowsEditing = YES;        [self presentModalViewController:imagePicker animated:YES]; }


摄像头图片的来源为UIImagePickerControllerSourceTypeCamera
 #pragma mark 从摄像头获取活动图片 - (void)pickImageFromCamera {    imagePicker = [[UIImagePickerController alloc] init];    imagePicker.delegate = self;    imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;    imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;    imagePicker.allowsEditing = YES;        [self presentModalViewController:imagePicker animated:YES]; }

#pragma mark - 选择完照片后掉用的方法,可以对图片进行设置或处理
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {    UIImage *image= [info objectForKey:@"UIImagePickerControllerOriginalImage"];    if (picker.sourceType == UIImagePickerControllerSourceTypeCamera)    { //        UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);    } 
//改变图片大小   theImage = [UtilMethod imageWithImageSimple:image scaledToSize:CGSizeMake(120.0, 120.0)];//调用下面的image压缩方法    UIImage *midImage = [UtilMethod imageWithImageSimple:image scaledToSize:CGSizeMake(210.0, 210.0)];    UIImage *bigImage = [UtilMethod imageWithImageSimple:image scaledToSize:CGSizeMake(440.0, 440.0)];    [theImage retain];    [self saveImage:theImage WithName:@"salesImageSmall.jpg"];    [self saveImage:midImage WithName:@"salesImageMid.jpg"];    [self saveImage:bigImage WithName:@"salesImageBig.jpg"];        [self dismissModalViewControllerAnimated:YES];    [self refreshData]; }

#pragma mark - 压缩图片+ (UIImage*)imageWithImageSimple:(UIImage*)image scaledToSize:(CGSize)newSize{    // Create a graphics image context    UIGraphicsBeginImageContext(newSize);        // Tell the old image to draw in this new context, with the desired    // new size    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];        // Get the new image from the context    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();        // End the context    UIGraphicsEndImageContext();        // Return the new image.    return newImage; }

#pragma mark - 存储图像 到沙盒- (void)saveImage:(UIImage *)tempImage WithName:(NSString *)imageName {    NSData* imageData = UIImagePNGRepresentation(tempImage);    NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    NSString* documentsDirectory = [paths objectAtIndex:0];    // Now we get the full path to the file    NSString* fullPathToFile = [documentsDirectory stringByAppendingPathComponent:imageName];    // and then we write it out    [imageData writeToFile:fullPathToFile atomically:NO]; }

#pragma mark - 从Documents目录下获取图片 - (NSString *)documentFolderPath {    return [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; }







0 0
原创粉丝点击