VPCamera3/SwiftProject/SwiftProject/Project/Util/ZZHImageExtension.swift

95 lines
3.5 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// ZZHImageExtension.swift
// SwiftProject
//
// Created by aaa on 2024/3/15.
//
import Foundation
import UIKit
import CoreImage
let EXImageContext = CIContext()
extension UIImage {
func imageAtRect(rect: CGRect) -> UIImage? {
// CGRect
guard let cgImage = self.cgImage else {
guard let ciImage = self.ciImage else {
return nil
}
// CIImageCGImage
let imageRef = ciImage.cropped(to: rect)
//,
let final = EXImageContext.createCGImage(imageRef, from:imageRef.extent)
return UIImage(cgImage: final!)
}
// print("cgimage.....>>>>>>>>>>>>>.")
let imageRef = cgImage.cropping(to: rect)
return imageRef == nil ? nil : UIImage(cgImage: imageRef!)
}
// func rotate( radians: CGFloat) -> UIImage? {
// //
// let radians = radians * CGFloat.pi / 180
// // 2D
// var transform = CGAffineTransform(rotationAngle: radians)
// //
// let rotatedViewBox = UIView(frame: CGRect(origin: .zero, size: self.size))
// rotatedViewBox.transform = transform
// let rotatedSize = rotatedViewBox.frame.size
// //
// UIGraphicsBeginImageContextWithOptions(rotatedSize, false, 1.0)
// defer { UIGraphicsEndImageContext() }
// //
// let rotatedView = UIView(frame: CGRect(origin: .zero, size: rotatedSize))
// rotatedView.transform = transform
// // image
// self.draw(in: rotatedView.frame)
// //
// return UIGraphicsGetImageFromCurrentImageContext()
// }
//
//
func rotate(radians: CGFloat) -> UIImage {
let rotatedSize = CGRect(origin: .zero, size: size)
.applying(CGAffineTransform(rotationAngle: CGFloat(radians)))
.integral.size
UIGraphicsBeginImageContext(rotatedSize)
if let context = UIGraphicsGetCurrentContext() {
let origin = CGPoint(x: rotatedSize.width / 2.0,
y: rotatedSize.height / 2.0)
context.translateBy(x: origin.x, y: origin.y)
context.rotate(by: radians)
draw(in: CGRect(x: -origin.y, y: -origin.x,
width: size.width, height: size.height))
let rotatedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return rotatedImage ?? self
}
return self
}
//
func getUpImg(imgOrigOritentation:UIImage.Orientation)->UIImage {
let dg = getRotateFrom(imgOrigOritentation)
let rotatedImage = rotate(radians:dg)
return rotatedImage
}
func getRotateFrom(_ imgOrigOritentation:UIImage.Orientation) ->CGFloat {
// print("..or:\(imgOrigOritentation.rawValue)")
if imgOrigOritentation == .left {
return -.pi/2
} else if imgOrigOritentation == .right{
return .pi/2
}
else {//downup便
return .pi
}
}
}