iPhone:How to implement “move and scale” functiona

2019-04-06 10:13发布

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.

5条回答
一夜七次
2楼-- · 2019-04-06 10:23

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!

查看更多
虎瘦雄心在
3楼-- · 2019-04-06 10:24

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.

查看更多
唯我独甜
4楼-- · 2019-04-06 10:28

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

查看更多
Evening l夕情丶
5楼-- · 2019-04-06 10:32

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)

}
查看更多
我想做一个坏孩纸
6楼-- · 2019-04-06 10:33

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];
}
查看更多
登录 后发表回答