build: compile release APK and update dependencies (expo-image-manipulator/loader)
This commit is contained in:
Generated
Vendored
+30
@@ -0,0 +1,30 @@
|
||||
// Copyright 2024-present 650 Industries. All rights reserved.
|
||||
|
||||
/**
|
||||
Transformer that creates a new image by rotating given image by the rotate angle.
|
||||
*/
|
||||
internal struct ImageRotateTransformer: ImageTransformer {
|
||||
let rotate: Double
|
||||
|
||||
@MainActor
|
||||
func transform(image: UIImage) async throws -> UIImage {
|
||||
guard let cgImage = image.cgImage else {
|
||||
throw ImageNotFoundException()
|
||||
}
|
||||
let rads = rotate * .pi / 180
|
||||
let rotatedView = UIView(frame: CGRect(origin: .zero, size: image.size))
|
||||
|
||||
rotatedView.transform = CGAffineTransform(rotationAngle: rads)
|
||||
|
||||
let rotatedSize = CGSize(width: rotatedView.frame.size.width.rounded(.down), height: rotatedView.frame.size.height.rounded(.down))
|
||||
let origin = CGPoint(x: -image.size.width / 2, y: -image.size.height / 2)
|
||||
|
||||
return drawInNewContext(size: rotatedSize) { context in
|
||||
let cgContext = context.cgContext
|
||||
cgContext.translateBy(x: rotatedSize.width / 2, y: rotatedSize.height / 2)
|
||||
cgContext.rotate(by: rads)
|
||||
cgContext.scaleBy(x: 1.0, y: -1.0)
|
||||
cgContext.draw(cgImage, in: CGRect(origin: origin, size: image.size))
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user