2014-01-21 4 views
0

Я создаю приложение индекса ученика, в котором вы можете сохранять имена, изображения и роли учащихся. Все работает отлично, но когда я создавал определенное количество студентов (с картинками) во время тестирования приложений, приложение работает очень медленно. Приложите соответствующие методы. Есть ли способ сжать размер данных изображения?Сжатие Данные изображения перед сохранением в Core Data

- (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]; 
} 

ответ

3

Вы уже сжатия изображения. Когда вы вызываете UIImagePNGRepresentation, вы получаете сжатый файл изображения в формате PNG.

Вы не размещали данные своей модели данных, но как минимум, убедитесь, что атрибут picdata настроен на использование внешнего хранилища в редакторе моделей. Сделайте это первым.

Если это не помогает, существуют другие подходы к уменьшению воздействия бинарных капель на основные данные. Но это не следующий шаг. Вы конкретно говорите о медлительности, а не о проблемах с памятью, и проблемы с основными данными и изображениями гораздо чаще вызывают проблемы с памятью. Вместо того, чтобы беспокоиться об обработке изображений, когда у вас есть проблема с скоростью, используйте «Инструменты» для профилирования вашего приложения. Вы точно узнаете, где он замедляется.

+0

Большое спасибо за ваш ответ. К сожалению, я не могу усовершенствовать комментарий ура, мне нужно еще одно разрешение, чтобы его можно было разрешить. –