【发布时间】:2010-12-26 02:26:06
【问题描述】:
我正在制作一个包含数码变焦的相机应用程序。我有一个滑块(zoomSlider),最小值为 1,最大值为 4。当用户点击相机按钮时,它会拍照,然后我将其裁剪以进行缩放。我有两个问题:
如何裁剪图像的正中间? (例如,2 倍缩放,矩形将以 600x800 的尺寸居中(适用于 iPhone 2G/3G))
当我这样做时,它会旋转图像。我通过旋转它所在的 UIImageView 来弥补它,但这会导致纵向图片变为横向,反之亦然。
这是我的代码:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
if ([mediaType isEqualToString:@"public.image"]){
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
CGRect clippedRect = CGRectMake(600, 450, image.size.width/zoomSlider.value, image.size.height/zoomSlider.value);
UIImage *cropped = [self imageByCropping:image toRect:clippedRect];
CGRect croppedImageSize = CGRectMake(0, 0, image.size.width/zoomSlider.value, image.size.height/zoomSlider.value);
[cropped drawInRect:croppedImageSize];
zoomPhoto.frame = croppedImageSize;
zoomPhoto.image = cropped;
CGAffineTransform rotateTransform = CGAffineTransformRotate(CGAffineTransformIdentity,
RADIANS(90.0));
zoomPhoto.transform = rotateTransform;
}
- (UIImage *)imageByCropping:(UIImage *)imageToCrop toRect:(CGRect)rect
{
CGImageRef imageRef = CGImageCreateWithImageInRect([imageToCrop CGImage], rect);
UIImage *cropped = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
return cropped;
}
【问题讨论】:
标签: iphone uiimage zooming center crop