Я работаю над приложением, которое использует переднюю камеру iPhone. Когда изображение снимается с помощью этой камеры, iPhone воспроизводит его горизонтально. Я хочу отразить его обратно, чтобы иметь возможность сохранить его и отобразить так, как он был виден на экране iPhone.
Я прочитал много документов и много советов в сети, и я все еще очень сбит с толку.
После моих исследований и многих попыток я нашел это решение, которое работает как для сохранения, так и для отображения:
- (UIImage *) flipImageLeftRight:(UIImage *)originalImage {
UIImageView *tempImageView = [[UIImageView alloc] initWithImage:originalImage];
UIGraphicsBeginImageContext(tempImageView.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGAffineTransform flipVertical = CGAffineTransformMake(
1, 0,
0, -1,
0, tempImageView.frame.size.height
);
CGContextConcatCTM(context, flipVertical);
[tempImageView.layer renderInContext:context];
UIImage *flipedImage = UIGraphicsGetImageFromCurrentImageContext();
flipedImage = [UIImage imageWithCGImage:flipedImage.CGImage scale:1.0 orientation:UIImageOrientationDown];
UIGraphicsEndImageContext();
[tempImageView release];
return flipedImage;
}
Но это слепое использование, и я не понимаю, что делается.
Я попытался использовать 2 imageWithCGImage, чтобы отразить его, а затем повернуть на 180 °, но это не работает по какой-то загадочной причине.
Итак, мой вопрос: не могли бы вы помочь мне написать оптимизированный метод, который работает, и я бы смог понять, как он работает. Матрица для меня черная дыра...