在iphone中保存或捕获图像时如何降低图像分辨率和内存大小
在我的联系人应用程序中我使用图像视图显示联系人图像 在此过程中,在保存数据的同时,用户还可以保存联系人图像(以字符串、图像文件名的形式) 我将图像复制到沙盒(文档目录)中,并保存图像的文件名在iphone中保存或捕获图像时如何降低图像分辨率和内存大小,iphone,objective-c,uiimageview,uiimage,uiimagepickercontroller,Iphone,Objective C,Uiimageview,Uiimage,Uiimagepickercontroller,在我的联系人应用程序中我使用图像视图显示联系人图像 在此过程中,在保存数据的同时,用户还可以保存联系人图像(以字符串、图像文件名的形式) 我将图像复制到沙盒(文档目录)中,并保存图像的文件名 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
NSString *DirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
[[NSUserDefaults standardUserDefaults] setValue:storedPicsDict.contactImage forKey:@"oldContactPic"];
//To SET the NEw IMAGE images from directory path
CFUUIDRef uuid = CFUUIDCreate(NULL);
CFStringRef generatedUUIDString = CFUUIDCreateString(NULL, uuid);
CFRelease(uuid);
NSString* hashKey = [(NSString*)generatedUUIDString autorelease];
self.ContactImageFilePath = [NSString stringWithFormat:@"%@/%@.png",DirectoryPath,hashKey];
storedPicsDict.contactImage = self.ContactImageFilePath;
[contactPicture setImage:image forState:UIControlStateNormal];
isNewContactImage = true;
}
[picker dismissModalViewControllerAnimated:YES];
}
相应的保存图像将显示在联系人信息中
但是,当我保存的图像数超过6/7时,会导致内存警告,并且应用程序会崩溃/减速*
所以我需要以低资源和低内存大小保存图像
怎么可能,谢谢用这个怎么样
UIImage *small = [UIImage imageWithCGImage:original.CGImage scale:0.25 orientation:original.imageOrientation];
并将较小的图像保存到tmp文件路径以便上载。图像需要是.png吗?
否则,您也可以尝试使用UIImageJPEGRepresentation来降低图像质量。1>以jpeg格式保存图像,以减小图像大小
NSData *imgData = UIImageJPEGRepresentation(your_UIImage_to_save, 0.5);
[imgData writeToFile:path_of_doc_dir_with_image_name atomically:YES];
2>
如果您想降低图像的质量和大小,可以使用以下代码
CGSize newSize=CGSizeMake(50,50); // I am giving resolution 50*50 , you can change your need
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
希望这对你有帮助