ios - Image made from multiple imageviews not saving correctly with user added image from camera or library -


i trying make new uiimage multiple uiimageviews reflects image movement made gesture recognizers. have working image saved correctly, works placeholder image; when add new image camera or library looks warped , doesn't save correctly. (see below)

in app james franco face directly on dog's face.  in app dog picture warped not warped when save photo , view in camera roll.

i need uiimageview image comes camera/library size dynamically doesn't weird , skewed in app , in camera roll/export source when saved/exported, , need image reflect onscreen in terms of placement of images on user's image.

any appreciated...like said, have working placeholder image messed when use image camera or library. code samples below, please let me know if more information needed!

- (uiimage *)renderimage {     cgrect contextrect = (self.userimage.image ? (cgrect){0, 0, self.userimage.image.size} : self.view.bounds); cgsize contextsize2 = contextrect.size;  uigraphicsbeginimagecontextwithoptions(contextsize2, no, 0.0);  cgcontextref context2 = uigraphicsgetcurrentcontext(); [self.userimage.image drawinrect:contextrect];  (uiimageview *francoimageview in self.francos) {     [self drawfrancoimagewithcontextsize:contextsize2  francoimageview:francoimageview]; }  uiimage *francodimage = uigraphicsgetimagefromcurrentimagecontext(); uigraphicsendimagecontext();      return francodimage; }  - (void)drawfrancoimagewithcontextsize:(cgsize)contextsize francoimageview:(uiimageview *)francoimageview {     cgrect francoimageframeinview = [self.userimage convertrect:francoimageview.frame fromview:francoimageview.superview];    cgsize userimageviewsize = self.userimage.frame.size;    cgfloat scalefactor = contextsize.height / userimageviewsize.height; cgrect scaledfrancorect = cgrectmake(francoimageframeinview.origin.x * scalefactor,                                      francoimageframeinview.origin.y * scalefactor,                                      francoimageframeinview.size.width * scalefactor,                                      francoimageframeinview.size.height * scalefactor);      [francoimageview.image drawinrect:scaledfrancorect];  } 

it worth noting have userimageview (the 1 placeholder , doesn't work correctly when changed - in photo below dog photo) set outlet constraints; constraints called when image replaced camera or library photo...

- (void)imagepickercontroller:(uiimagepickercontroller *)picker didfinishpickingmediawithinfo:(nsdictionary *)info { uiimage *chosenimage = info[uiimagepickercontrolleroriginalimage]; self.userimage.image = chosenimage;  //constraints , needs layout  self.userimageaspectratioconstraint.constant = chosenimage.size.width / chosenimage.size.height; [self.userimage setneedslayout];  [picker dismissviewcontrolleranimated:yes completion:nil]; } 

not sure if necessary or not here storyboard constraints set userimageview:

*scale fill

*userimageaspectratioconstraint -> userimage.width equal userimage.height

thank you!


Comments