/ / Dlaczego obrazy z UIImagePickerController czasami są przycinane niepoprawnie? - swift, parse.com, uiimage, uiimagepickercontroller, uiimagejpegrepresentation

Dlaczego obrazy z UIImagePickerController czasami są nieprawidłowo przycinane? - swift, parse.com, uiimage, uiimagepickercontroller, uiimagejpegrepresentation

Czasami zdjęcia wybrane z albumu ze zdjęciami UIImagePickerController są przycinane inaczej niż użytkownik chce je przyciąć. Dzieje się to w ok. 1 z 50 przesłanych obrazów.

Kiedy to się dzieje, obrazy są zawsze przycinane doczęść obrazu z lewego górnego rogu. Oto przykładowy obraz z (1) pokazujący w czerwonym prostokącie, co użytkownik rzekomo wybiera, aby przyciąć i (2) jaki obraz kończy się na serwerze.

wprowadź opis obrazu tutaj

Wybór w (1) jest założeniem, ponieważ jestnieznane, jak użytkownicy dokładnie pozycjonują uprawę i nie można jeszcze odtworzyć tego nieprawidłowego przycinania. Zostało to zaobserwowane tylko w aplikacji na żywo. Niektórzy użytkownicy próbowali przesłać ten sam obraz wiele razy zawsze z tym samym niepoprawnym przycięciem i ostatecznie narzekali, więc nie jest tak, że użytkownicy celowo przycinają takie obrazy.

Niektórzy użytkownicy próbowali przesłać różne obrazy, a wszystkie zostały niepoprawnie przycięte.

Oto kod (uproszczony, ale nic więcej nie dzieje się z obrazem):

class ImagePicker {

private let imagePicker = UIImagePickerController()

func showPicker() {
imagePicker.sourceType = .PhotoLibrary
imagePicker.mediaTypes = [kUTTypeImage as String]
imagePicker.allowsEditing = true
imagePicker.delegate = delegate
imagePicker.modalPresentationStyle = .OverFullScreen
parentViewController.presentViewController(imagePicker, animated: true, completion: nil)
}

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {

if let image = info[UIImagePickerControllerEditedImage] as? UIImage {
uploadImage(image)
}

picker.dismissViewControllerAnimated(true, completion: nil)
}

func uploadImage(image: UIImage) {

let imageData = UIImageJPEGRepresentation(image, 0.75)!
let imageFile = PFFile(name: "image.png", data: imageData)

// Upload to Open Source Parse Server which stores the image in an Amazon S3 bucket.
let imageObject = PFObject(className: "ImageClass")
imageObject(imageFile, forKey: "imageFile")
imageObject.saveInBackground()
}
}

Czy ktoś wie, dlaczego tak się dzieje?

Aktualizacja:

Byłem w stanie odtworzyć problem na iPadzie, będę tutaj aktualizował, jaki był wynik.

Aktualizacja:

Problem pojawił się tylko na iPadzie, więc prawdopodobnie jest związany z błędem w UIImagePickerViewController podczas przycinania obrazu.

Odpowiedzi:

0 dla odpowiedzi № 1

Miałem ten sam problem. W moim przypadku rozwiązałem go przez zmianę trybu zawartości mojego imageView. Został ustawiony na "scaleAspectFill". Po prostu usunąłem go i mój obraz został przycięty w prawidłowy sposób.