Как реализовать цифровой зум с камерой устройства iphone? - PullRequest
0 голосов
/ 26 сентября 2011

В приложении для iPhone

Я хочу реализовать цифровое масштабирование в приложении для iphone во время захвата фотографии с помощью камеры iphone.

Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 26 сентября 2011

UIImagePickerController имеет cameraViewTransform, который можно использовать для масштабирования изображения с камеры, когда пользователь увеличивает масштаб. После того, как изображение было снято, вы можете обрезать его и изменить его размер в соответствии с настройкой масштаба.

Для этого вы должны создать новый графический контекст с желаемым размером и нарисовать изображение, полученное из средства выбора изображений, в этот контекст.

1 голос
/ 29 сентября 2011

После того, как вы захватили изображение, я думаю, вы можете использовать масштабирование и обрезку изображений до нужного размера.

Но четкость изображений может отличаться от оригинальной.

- (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;
}

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...