UIImageWriteToSavedPhotosAlbum working… sometimes

后端 未结 2 669
滥情空心
滥情空心 2020-12-15 14:36

UIImageWriteToSavedPhotosAlbum is only working sometimes. Sometimes it works, sometimes it doesn\'t, exact same function.

- (void)imagePickerController:(UIIm         


        
相关标签:
2条回答
  • 2020-12-15 14:54

    I would start by adding a completion target method to the save call to see if it is producing any errors. See the UIImageWriteToSavedPhotosAlbum documentation for details.

    Edit:

    One of the times it returned... wait_fences: failed to receive reply: 10004003

    That means the operation timed out. There are many causes of this:

    1. Low memory: put a log in didReceiveMemoryWarning to see if this is the cause.
    2. Corrupt files that the system can't save. If the image is generated each time it might not come out right each time.
    3. Improperly reported disk full error.

    I think (1) most likely and explains the intermittent nature. When you have enough memory the method works and when you don't it fails.

    In addition, when you compile, resolve any warnings that come up. Those are just errors that won't show up until runtime. You're problem might be listed there

    0 讨论(0)
  • 2020-12-15 15:09

    Hope this answer isn't too late to be helpful. I ran into exactly the same problem. As it turns out the issue is two-fold. First, the image does need to be retained before it is sent to UIImageWriteToSavedPhotosAlbum. Secondly, on pre-iPhone4 devices this function can take a loooooong time to do its thing. The fix I found was to implement a callback function. See the documentation for UIImageWriteToSavedPhotosAlbum about this. The function must be in the correct format, you can't just use any old function. In this function be sure to release the image you retained or you will leak memory. You can also use this to keep track of when images are done saving. Here is my basic code below:

        -(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];
        }
    
    0 讨论(0)
提交回复
热议问题