Rohan
Rohan

Reputation: 2935

iPhone:How to implement "move and scale" functionality for image fetched from photo library

As shown in the following figure I want to implement "move and scale" functionality for the image fetched from the photo library.

If you have any idea or code then provide me.

image

Thanx in advance.

Upvotes: 8

Views: 6646

Answers (5)

user9470831
user9470831

Reputation:

In Swift 4.2, be sure pickerController.allowsEditing = true is added to the method that accesses your photos.

Then, create the following method with the two qualifying "if statements". The "if statements" will cover two different scenarios: 1) the user edits the photo - .editedImage OR 2) the user did not edit the photo - .originalImage.

For this method to work properly, be sure to place the .editedImage "if statement" first. I don't know why this is so, but I had to.

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

    if let editedImage = info[UIImagePickerController.InfoKey.editedImage] as? UIImage {

        imageView.image = editedImage

    } else if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {

        imageView.image = image
    }


    self.dismiss(animated: true, completion: nil)

}

Upvotes: 1

txulu
txulu

Reputation: 1812

Maybe you are looking for:

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
[imagePicker setAllowsEditing:YES];

Then in the delegate method:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *chosenImage = [info objectForKey:UIImagePickerControllerEditedImage];
    if(!chosenImage) {
        chosenImage = [info objectForKey:UIImagePickerControllerOriginalImage];
    }
    [self dismissViewControllerAnimated:YES completion:nil];
}

Upvotes: 2

SirRupertIII
SirRupertIII

Reputation: 12595

This is extremely late, but hopefully it'll help.

In the UIImagePickerController Delegate method imagePickerController:didFinishPickingMediaWithInfo: the "moved" and "scaled" image is accessed through the UIImagePickerControllerEditedImage key like this

 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
 {
     UIImage *img = (UIImage *)[info objectForKey: UIImagePickerControllerEditedImage];

 // Do what you need to with that image

 }

Hope it helps someone!

Upvotes: 3

DShah
DShah

Reputation: 9876

Please go through this answer only if others are not working.... :)

In ZBar project there are some sample applications, which takes the pic of Barcode. It allows to Move and Scale the image. I havnt looked at the code. But you can try as your last option.

Upvotes: 0

Krrish
Krrish

Reputation: 2256

See this answer by Jane Sales

From The answer for this question Set dimensions for UIImagePickerController “move and scale” cropbox

The solution I recommend is to disable editing for the image picker and handle it yourself. For instance, I put the image in a scrollable, zoomable image view. On top of the image view is a fixed position "crop guide view" that draws the crop indicator the user sees. Assuming the guide view has properties for the visible rect (the part to keep) and edge widths (the part to discard) you can get the cropping rectangle like so.

Here is link for Re-sizing + UIImage

1) Link for Cropping a UIImage

2) Another link

3) More things to do with UIImage

Upvotes: 7

Related Questions