UIImagePickerController is showing last clicked image

RaghavSukhwal.4674RaghavSukhwal.4674 Raghav SukhwalUSMember
edited November 2013 in iOS

In my project, when I launch camera first time it works fine. when I launch camera second time, I see image last clicked in view finder. I am not sure what's causing this.

Can anyone please help me here?

Answers

  • RaghavSukhwal.4674RaghavSukhwal.4674 Raghav Sukhwal USMember

    here is my code to launch camera.

    UIImagePickerController imagePicker = new UIImagePickerController();
    // Handle media selected.
    var documentsDirectory = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments);
    imagePicker.FinishedPickingMedia += (sender, e) => {
    UIImage image = (UIImage)e.Info.ObjectForKey(
    new NSString("UIImagePickerControllerOriginalImage"));

            if (image != null)
    {
    this.InvokeOnMainThread(() => {
    this.clickedImage.Image = image;
    image.SaveToPhotosAlbum(delegate(UIImage img, NSError err){
    });
    string pngFilename = System.IO.Path.Combine (documentsDirectory, "Photo.png"); // hardcoded filename, overwrites each time
    NSData imgData = image.AsPNG();
    NSError SaveErr = null;
    if (imgData.Save(pngFilename, false, out SaveErr))
    {
    Console.WriteLine("saved as " + pngFilename);
    } else {
    Console.WriteLine("NOT saved as" + pngFilename + " because" + SaveErr.LocalizedDescription);
    }
    });
    }

    DismissViewController(true,null);

    };

    // Handle cancellation of picker.
    imagePicker.Canceled += (sender, e) => {
    DismissViewController(true,null);

    };



    btnCameraDisplay1.SetTitle("Take Picture", UIControlState.Normal);
    btnCameraDisplay1.Font = UIFont.SystemFontOfSize(19);
    btnCameraDisplay1.SetTitleColor(UIColor.Black, UIControlState.Normal);

    btnCameraDisplay1.TouchUpInside += delegate(object sender, EventArgs e)
    {
    if(UIImagePickerController.IsSourceTypeAvailable(UIImagePickerControllerSourceType.Camera))
    {
    imagePicker.SourceType = UIImagePickerControllerSourceType.Camera;
    imagePicker.AllowsEditing = false;
    this.PresentViewController(imagePicker, true,null);
    }
    else{
    alertView = new UIAlertView();
    alertView.AddButton("OK");
    alertView.Message = "No camera available in this device.";
    alertView.AlertViewStyle = UIAlertViewStyle.Default;
    alertView.Show();
    }
    };
  • RaghavSukhwal.4674RaghavSukhwal.4674 Raghav Sukhwal USMember

    Hi there,

    Any help/hint on this?

  • JamesBryanJamesBryan James Bryan USMember
    edited February 7

    GC.Collect()

    Place this after you have have used imagePicker.DismissViewController();

    I place it in the parent UIViewController. This is after I have saved the image.

    This error gave me a lot of grief but so far so good.

    Thanks to Shaddix on stack overflow. I can't believe I didn't remember that little gem myself.

Sign In or Register to comment.