|
@@ -8,6 +8,7 @@
|
|
|
|
|
|
import Foundation
|
|
|
import UIKit
|
|
|
+import AVFoundation
|
|
|
|
|
|
struct Utils {
|
|
|
static func getContactIds() -> [Int] {
|
|
@@ -137,44 +138,24 @@ struct Utils {
|
|
|
return nil
|
|
|
}
|
|
|
}
|
|
|
-}
|
|
|
-
|
|
|
-extension UIColor {
|
|
|
- convenience init(alpha: Int, red: Int, green: Int, blue: Int) {
|
|
|
- assert(red >= 0 && red <= 255, "Invalid red component")
|
|
|
- assert(green >= 0 && green <= 255, "Invalid green component")
|
|
|
- assert(blue >= 0 && blue <= 255, "Invalid blue component")
|
|
|
-
|
|
|
- self.init(red: CGFloat(red) / 255, green: CGFloat(green) / 255, blue: CGFloat(blue) / 255, alpha: CGFloat(alpha) / 255)
|
|
|
- }
|
|
|
-
|
|
|
- convenience init(netHex: Int) {
|
|
|
- var alpha = (netHex >> 24) & 0xFF
|
|
|
- if alpha == 0 {
|
|
|
- alpha = 255
|
|
|
- }
|
|
|
|
|
|
- self.init(alpha: alpha, red: (netHex >> 16) & 0xFF, green: (netHex >> 8) & 0xFF, blue: netHex & 0xFF)
|
|
|
- }
|
|
|
-
|
|
|
- // see: https://stackoverflow.com/a/33397427
|
|
|
- convenience init(hexString: String) {
|
|
|
- let hex = hexString.trimmingCharacters(in: CharacterSet.alphanumerics.inverted)
|
|
|
- var int = UInt32()
|
|
|
- Scanner(string: hex).scanHexInt32(&int)
|
|
|
- let a, r, g, b: UInt32
|
|
|
- switch hex.count {
|
|
|
- case 3: // RGB (12-bit)
|
|
|
- (a, r, g, b) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17)
|
|
|
- case 6: // RGB (24-bit)
|
|
|
- (a, r, g, b) = (255, int >> 16, int >> 8 & 0xFF, int & 0xFF)
|
|
|
- case 8: // ARGB (32-bit)
|
|
|
- (a, r, g, b) = (int >> 24, int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF)
|
|
|
- default:
|
|
|
- (a, r, g, b) = (255, 0, 0, 0)
|
|
|
- }
|
|
|
- self.init(red: CGFloat(r) / 255, green: CGFloat(g) / 255, blue: CGFloat(b) / 255, alpha: CGFloat(a) / 255)
|
|
|
- }
|
|
|
+ static func generateThumbnailFromVideo(url: URL) -> UIImage? {
|
|
|
+ do {
|
|
|
+ let asset = AVURLAsset(url: url)
|
|
|
+ let imageGenerator = AVAssetImageGenerator(asset: asset)
|
|
|
+ imageGenerator.appliesPreferredTrackTransform = true
|
|
|
+ // Select the right one based on which version you are using
|
|
|
+ // Swift 4.2
|
|
|
+ //let cgImage = try imageGenerator.copyCGImage(at: .zero, actualTime: nil)
|
|
|
+ // Swift 4.0
|
|
|
+ let cgImage = try imageGenerator.copyCGImage(at: CMTime.zero, actualTime: nil)
|
|
|
+ return UIImage(cgImage: cgImage)
|
|
|
+ } catch {
|
|
|
+ print(error.localizedDescription)
|
|
|
+
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
class DateUtils {
|