在保存到Core Data之前压缩图像数据

时间:2014-01-21 16:22:09

标签: image performance core-data compression image-size

我正在创建一个学生索引应用程序,您可以在其中保存学生的姓名,图片和角色。一切正常,但是当我在应用测试时创建了一定数量的学生(带图片)时,应用程序运行得非常慢。请查看随附的相应方法。有没有办法压缩图像数据的大小?

- (IBAction)cameraButtonPressed:(id)sender
{
    if (! [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] ) {
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Error" message:@"no access to camera" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
        [alert show];
        return;
    }
    UIImagePickerController *controller = [[UIImagePickerController alloc] init];
    controller.delegate = self;
    controller.sourceType = UIImagePickerControllerSourceTypeCamera;
    [self presentViewController:controller animated:YES completion:nil];
}

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
    [picker dismissViewControllerAnimated:YES completion:nil];    

    _imageView.image = image;
    _imageView.contentMode = UIViewContentModeScaleAspectFit;
}

- (IBAction)save:(id)sender
{
        Student *student = [NSEntityDescription insertNewObjectForEntityForName:@"Student"
                                                             inManagedObjectContext:self.managedObjectContext];

    self.student.picdata = UIImagePNGRepresentation(_imageView.image);

    [self.managedObjectContext save:nil];
    [self.delegate DetailStudentSavePressed:self];
}

1 个答案:

答案 0 :(得分:3)

已经压缩图像。当您致电UIImagePNGRepresentation时,您会收到PNG风格的压缩图片文件。

您没有发布数据模型的详细信息,但至少,请确保picdata属性配置为在模型编辑器中使用外部存储。先做。

如果这没有帮助,还有其他方法可以减少二进制blob对Core Data的影响。但那些不是下一步。您特别提到缓慢而不是内存问题,Core Data和图像的问题更可能导致内存问题。当您遇到速度问题时,不要担心图像处理,而是使用Instruments来分析您的应用。你会发现它正在减速的确切位置。