如何使用iphone设备相机实现数码变焦?

时间:2011-09-26 12:57:56

标签: iphone objective-c cocoa-touch ios4

在iPhone App中,

我想在使用iphone相机拍摄照片的同时在我的iphone应用中实现数码变焦。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

UIImagePickerController有一个cameraViewTransform,您可以在用户缩放时缩放相机视图。拍摄完图像后,您可以根据缩放设置裁剪并调整图像大小。

为此,您可以创建具有所需大小的新图形上下文,并将从图像选择器获得的图像绘制到该上下文中。

答案 1 :(得分:1)

一旦你拍摄了图像,我认为你可以使用缩放和裁剪图像到你想要的大小。

但图像的清晰度可能与原始图像不同。

- (UIImage *)image
{
    if (cachedImage == nil) {

        // HERE YOU CAN GIVE THE FRAME YOU WANT THE SIZE OF THE IMAGE TO BE.
        CGRect imageFrame = CGRectMake(0, 0, 400, 300);
        UIView *imageView = [[UIView alloc] initWithFrame:imageFrame];
        [imageView setOpaque:YES];
        [imageView setUserInteractionEnabled:NO];

        [self renderInView:imageView withTheme:nil];        

        UIGraphicsBeginImageContext(imageView.bounds.size);
            CGContextRef c = UIGraphicsGetCurrentContext();
            CGContextGetCTM(c);
            CGContextScaleCTM(c, 1, -1);
            CGContextTranslateCTM(c, 0, -imageView.bounds.size.height);
            [imageView.layer renderInContext:c];
            cachedImage = [UIGraphicsGetImageFromCurrentImageContext() retain];

            // rescale image
            UIImage* bigImage = UIGraphicsGetImageFromCurrentImageContext();
            CGImageRef scaledImage = [self newCGImageFromImage:[bigImage CGImage] scaledToSize:CGSizeMake(100.0f, 75.0f)];
            cachedImage = [[UIImage imageWithCGImage:scaledImage] retain];
            CGImageRelease(scaledImage);
        UIGraphicsEndImageContext();

        [imageView release];
    }

    return cachedImage;
}

希望这会对你有所帮助。