Swift: 旋转 UIImage 并填充它
Swift: Rotating UIImage and filling it
我目前正在旋转图像并用 swift 填充它。
如果我使用下面的代码(我从互联网上获得),我可以旋转图像,保持大小。
代码下方说明了一个示例。
而且,问题是,旋转后我在每个角落都有一个灰色间隙。
我想用白色填充它,这样图像看起来不错。
在swift轮换后有什么方法可以填补空缺吗?
谢谢!
extension UIImage {
func rotatedBy(degree: CGFloat) -> UIImage {
let radian = -degree * CGFloat.pi / 180
UIGraphicsBeginImageContext(self.size)
let context = UIGraphicsGetCurrentContext()!
context.translateBy(x: self.size.width / 2, y: self.size.height / 2)
context.scaleBy(x: 1.0, y: -1.0)
context.rotate(by: radian)
context.draw(self.cgImage!, in: CGRect(x: -(self.size.width / 2), y: -(self.size.height / 2), width: self.size.width, height: self.size.height))
let rotatedImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return rotatedImage
}
}
您只需要在旋转图像之前设置填充颜色并填充上下文即可:
extension UIImage {
func rotatedBy(degree: CGFloat) -> UIImage? {
guard let cgImage = cgImage else { return nil }
UIGraphicsBeginImageContextWithOptions(size, false, 0)
guard let context = UIGraphicsGetCurrentContext() else { return nil }
defer { UIGraphicsEndImageContext() }
UIColor.white.setFill()
context.fill(.init(origin: .zero, size: size))
context.translateBy(x: size.width/2, y: size.height/2)
context.scaleBy(x: 1, y: -1)
context.rotate(by: -degree * .pi / 180)
context.draw(cgImage, in: CGRect(origin: .init(x: -size.width/2, y: -size.height/2), size: size))
return UIGraphicsGetImageFromCurrentImageContext()
}
}
我目前正在旋转图像并用 swift 填充它。 如果我使用下面的代码(我从互联网上获得),我可以旋转图像,保持大小。 代码下方说明了一个示例。 而且,问题是,旋转后我在每个角落都有一个灰色间隙。 我想用白色填充它,这样图像看起来不错。
在swift轮换后有什么方法可以填补空缺吗?
谢谢!
extension UIImage {
func rotatedBy(degree: CGFloat) -> UIImage {
let radian = -degree * CGFloat.pi / 180
UIGraphicsBeginImageContext(self.size)
let context = UIGraphicsGetCurrentContext()!
context.translateBy(x: self.size.width / 2, y: self.size.height / 2)
context.scaleBy(x: 1.0, y: -1.0)
context.rotate(by: radian)
context.draw(self.cgImage!, in: CGRect(x: -(self.size.width / 2), y: -(self.size.height / 2), width: self.size.width, height: self.size.height))
let rotatedImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return rotatedImage
}
}
您只需要在旋转图像之前设置填充颜色并填充上下文即可:
extension UIImage {
func rotatedBy(degree: CGFloat) -> UIImage? {
guard let cgImage = cgImage else { return nil }
UIGraphicsBeginImageContextWithOptions(size, false, 0)
guard let context = UIGraphicsGetCurrentContext() else { return nil }
defer { UIGraphicsEndImageContext() }
UIColor.white.setFill()
context.fill(.init(origin: .zero, size: size))
context.translateBy(x: size.width/2, y: size.height/2)
context.scaleBy(x: 1, y: -1)
context.rotate(by: -degree * .pi / 180)
context.draw(cgImage, in: CGRect(origin: .init(x: -size.width/2, y: -size.height/2), size: size))
return UIGraphicsGetImageFromCurrentImageContext()
}
}