Как перевернуть UIImage по вертикали (вверх / вниз)?Этот вопрос задают раньше ...
Я показываю изображение в виде изображения, и его можно рисовать.Для функции стирания я использую UIBezierpath в CAShapeLayer.Обводка CAShapeLayer - это UIColor (patternImage: background) .cgColor, где фон - это то же изображение, что и изображение в представлении изображения.Фон оказался перевернутым.Из других сообщений в Stackoverflow я понимаю, что это вызвано тем, что UIKit и Core Graphics используют другое начало координат для своей системы координат.
Я попробовал некоторые решения в сообщениях Stackoverflow, чтобы перевернуть фоновое изображение.Ни один из них, где работает:
UIImage* sourceImage = [UIImage imageNamed:@"whatever.png"];
UIImage* flippedImage = [UIImage imageWithCGImage:sourceImage.CGImage
scale:sourceImage.scale
orientation:UIImageOrientationUpMirrored];
let ciimage: CIImage = CIImage(CGImage: imagenInicial.CGImage!)
let rotada3 = ciimage.imageByApplyingTransform(CGAffineTransformMakeScale(1, -1))
func flipImageVertically() -> UIImage? {
UIGraphicsBeginImageContextWithOptions(size, false, scale)
let bitmap = UIGraphicsGetCurrentContext()!
bitmap.translateBy(x: size.width / 2, y: size.height / 2)
bitmap.scaleBy(x: 1.0, y: -1.0)
bitmap.translateBy(x: -size.width / 2, y: -size.height / 2)
bitmap.draw(self.cgImage!, in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
Я начал экспериментировать с последним решением, изменив масштаб и просто наблюдая за результатом.Оказалось, что мое решение состояло в том, что мне нужно было использовать
bitmap.scaleBy(x: 1.0, y: 1.0)
в функции flipImageVertically () для создания нового перевернутого изображения.
Я не понимаю этого.Масштабируя с 1, я думал, что я ничего не меняю.Я не знаю, важна ли ориентация изображения моего исходного изображения.Но imageOrientation .up.
Я надеюсь, что кто-то может объяснить, почему я могу перевернуть изображение по вертикали с помощью функции
func flipImageVertically() -> UIImage? {
UIGraphicsBeginImageContextWithOptions(size, false, scale)
let bitmap = UIGraphicsGetCurrentContext()!
bitmap.translateBy(x: size.width / 2, y: size.height / 2)
bitmap.scaleBy(x: 1.0, y: 1.0)
bitmap.translateBy(x: -size.width / 2, y: -size.height / 2)
bitmap.draw(self.cgImage!, in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}