iphone - Get 640x640 UIImage from UIImagePickerController on non-retina devices -
i'm getting edited image uiimagepickercontroller. on retina ios devices, image returned 640x640, on non-retina ios devices, image returned 320x320.
how 640x640 controller on non-retina devices without manually upscaling? need sizes constant regardless of screen because uploading it.
- (void)imagepickercontroller:(uiimagepickercontroller *)picker didfinishpickingmediawithinfo:(nsdictionary *)info { uiimage *image = info[uiimagepickercontrollereditedimage]; //image.size 320x320 points on both retina , non-retina devices. //how 640x640 *pixels* non-retina devices without upscaling? }
i not sure may without resize of image, not possible image retina , non-retina automatically.
so, need resize image following code;
- (void)imagepickercontroller:(uiimagepickercontroller *)picker didfinishpickingmediawithinfo:(nsdictionary *)info { [self dismissviewcontrolleranimated:yes completion:nil]; uiimage *img = [info objectforkey:uiimagepickercontrollereditedimage]; img = [self resizeimage:img]; // here got, img = 640x640 or 320x320 base on device; } code of resizeimage,
- (uiimage*)resizeimage:(uiimage*)image { cgsize newsize = nil; if ([[uiscreen mainscreen] respondstoselector:@selector(scale)] && [[uiscreen mainscreen] scale] == 2.0) { // retina newsize = cgsizemake(640, 640); // here need set size want; } else { // not retina newsize = cgsizemake(320, 320); // here need set size want; } uigraphicsbeginimagecontext( newsize );// cgsize has size want [image drawinrect:cgrectmake(0,0,newsize.width,newsize.height)]; uiimage* newimage = uigraphicsgetimagefromcurrentimagecontext(); uigraphicsendimagecontext(); return newimage; }
Comments
Post a Comment