1
我的相机的自定义覆盖图仅在中心留下了320x320的正方形,因此用户只能拍摄屏幕上的图片。UIImagePickerController使用自定义覆盖图进行缩放和裁剪
我检索原始图片,然后我想缩小它并只裁剪叠加层上可见的区域。
我在使用iPhone5时遇到了问题。它适用于iPhone3gs,4和4s。
这是我已经使用到目前为止该方法:
-(UIImage *)squareImageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
double ratio;
double delta;
CGPoint offset;
//make a new square size, that is the resized imaged width
CGSize sz = CGSizeMake(newSize.width, newSize.width);
//figure out if the picture is landscape or portrait, then
//calculate scale factor and offset
if (image.size.width > image.size.height) {
ratio = newSize.width/image.size.width;
delta = (ratio*image.size.width - ratio*image.size.height);
offset = CGPointMake(delta/2, 0);
} else {
ratio = newSize.width/image.size.height;
delta = (ratio*image.size.height - ratio*image.size.width);
if (self.isPickingFromLibrary) {
offset = CGPointMake(0, delta/2);
} else {
// Add 25 for image offset
offset = CGPointMake(0, delta/2+25);
}
}
//make the final clipping rect based on the calculated values
CGRect clipRect = CGRectMake(-offset.x, -offset.y,
(ratio * image.size.width) + delta,
(ratio * image.size.height) + delta);
//start a new context, with scale factor 0.0 so retina displays get
//high quality image
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
UIGraphicsBeginImageContextWithOptions(sz, YES, 0.0);
} else {
UIGraphicsBeginImageContext(sz);
}
UIRectClip(clipRect);
[image drawInRect:clipRect];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
在iPhone5的运行该方法之后,图像被裁剪,并大幅度正确缩放。
我想为方形图像制作出像样的自定义相机,而且我一直在用这个撞击我的头几个星期。我甚至研究过使用AVFoundation,但我甚至不知道从哪里开始。
如果任何人都可以帮助我缩放和裁剪任何设备的uiimagepicker方形图像给我的图像矩形,我会很感激。