Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iphone中保存或捕获图像时如何降低图像分辨率和内存大小_Iphone_Objective C_Uiimageview_Uiimage_Uiimagepickercontroller - Fatal编程技术网

在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();
希望这对你有帮助