Вопрос

UiimageWriteTosavedPhotosalbum иногда работает только. Иногда это работает, иногда это не то же самое функция.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
NSLog(@"Saving image to camera roll...");
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
NSLog(@"Done!"); }

Я использую контроллер UiimagePicker, чтобы получить изображение, которое затем вызывает эту функцию.

Иногда это спасает его к ролике камеры, в других случаях это просто нет.

У кого-нибудь есть какая-то идея?

Заранее спасибо.

Редактировать:

Метод завершения для UiimageWriteTosavedPhotosalbum когда-нибудь возвращает ошибку:

wait_fences: failed to receive reply: 10004003
Это было полезно?

Решение

Я бы начал с добавления целевого метода завершения к вызову сохранения, чтобы увидеть, что он производит какие-либо ошибки. Увидеть UIImageWriteToSavedPhotosAlbum Документация для деталей.

Редактировать:

Одна из времен, которые он вернулся ... Wait_fences: не удалось получить ответ: 10004003

Это означает, что операция заумна. Есть много причин этого:

  1. Низкая память: поставить войти в систему didReceiveMemoryWarning Чтобы увидеть, является ли это причиной.
  2. Поврежденные файлы, которые система не может сохранить. Если изображение генерируется каждый раз, когда он может не выйти прямо каждый раз.
  3. Неправильно сообщаемый диск полной ошибки.

Я думаю (1), скорее всего, и объясняет прерывистый характер. Когда у вас есть достаточно памяти, метод работает, и когда вы не ошибаетесь.

Кроме того, когда вы компилируете, разрешите любые предупреждения, которые придумывают. Это просто ошибки, которые не появляются до времени выполнения. Ваша проблема может быть указана там

Другие советы

Надеюсь, что этот ответ не слишком поздно, чтобы быть полезным. Я столкнулся с тем же проблемой. Как оказывается, проблема в два раза. Во-первых, изображение необходимо сохранить до того, как он отправляется в UiimageWriteTosavedPhotosalbum. Во-вторых, на устройствах Pre-iPhone4 эта функция может занять время, чтобы сделать свое дело. Исправление, которое я обнаружил, было реализовать функцию обратного вызова. Смотрите документацию для UiimageWriteTosavedPhotosalbum об этом. Функция должна быть в правильном формате, вы не можете просто использовать какую-либо старую функцию. В этой функции обязательно отпустите изображение, которое вы сохраните, или вы будете утерять память. Вы также можете использовать это, чтобы отслеживать, когда изображения будут сохранены. Вот мой базовый код ниже:

    -(void)processImage:(UIImage *)image {
        [image retain];
        UIImageWriteToSavedPhotosAlbum(reconstructedImage, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
}


    - (void)image:(UIImage *) image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo {
        NSLog(@"SAVE IMAGE COMPLETE");
        if(error != nil) {
            NSLog(@"ERROR SAVING:%@",[error localizedDescription]);
        }
        [image autorelease];
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top