marinofaggiana 4 years ago
parent
commit
8a0ca1fced
1 changed files with 7 additions and 34 deletions
  1. 7 34
      iOSClient/Extensions/UIImage+Extensions.swift

+ 7 - 34
iOSClient/Extensions/UIImage+Extensions.swift

@@ -31,7 +31,6 @@ extension UIImage {
         let originRatio = self.size.width / self.size.height
         let newRatio = size.width / size.height
         var newSize = size
-        let cgImage = self.cgImage!
 
         if isAspectRation {
             if originRatio < newRatio {
@@ -43,40 +42,14 @@ extension UIImage {
             }
         }
         
-        var format = vImage_CGImageFormat(bitsPerComponent: 8, bitsPerPixel: 32, colorSpace: nil, bitmapInfo: CGBitmapInfo(rawValue: CGImageAlphaInfo.first.rawValue), version: 0, decode: nil, renderingIntent: CGColorRenderingIntent.defaultIntent)
-        var sourceBuffer = vImage_Buffer()
-        
-        defer {
-            free(sourceBuffer.data)
-        }
-        
-        var error = vImageBuffer_InitWithCGImage(&sourceBuffer, &format, nil, cgImage, numericCast(kvImageNoFlags))
-        guard error == kvImageNoError else { return nil }
-        
-        // create a destination buffer
-        let destWidth = Int(newSize.width)
-        let destHeight = Int(newSize.height)
-        let bytesPerPixel = self.cgImage!.bitsPerPixel/8
-        let destBytesPerRow = destWidth * bytesPerPixel
-        let destData = UnsafeMutablePointer<UInt8>.allocate(capacity: destHeight * destBytesPerRow)
-        defer {
-            destData.deallocate()
+        UIGraphicsBeginImageContextWithOptions(newSize, false, 1.0)
+        self.draw(in: CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height))
+        let newImage = UIGraphicsGetImageFromCurrentImageContext()
+        UIGraphicsEndImageContext()
+        if let image = newImage {
+            return image
         }
-        var destBuffer = vImage_Buffer(data: destData, height: vImagePixelCount(destHeight), width: vImagePixelCount(destWidth), rowBytes: destBytesPerRow)
-        
-        // scale the image
-        error = vImageScale_ARGB8888(&sourceBuffer, &destBuffer, nil, numericCast(kvImageHighQualityResampling))
-        guard error == kvImageNoError else { return nil }
-        
-        // create a CGImage from vImage_Buffer
-        var destCGImage = vImageCreateCGImageFromBuffer(&destBuffer, &format, nil, nil, numericCast(kvImageNoFlags), &error)?.takeRetainedValue()
-        guard error == kvImageNoError else { return nil }
-        
-        // create a UIImage
-        let resizedImage = destCGImage.flatMap { UIImage(cgImage: $0, scale: 0.0, orientation: self.imageOrientation) }
-        destCGImage = nil
-        
-        return resizedImage
+        return self
     }
     
     func fixedOrientation() -> UIImage? {