marinofaggiana 4 жил өмнө
parent
commit
f67d6eb380

+ 62 - 4
iOSClient/Viewer/NCViewerImage/NCViewerImagePageContainer.swift

@@ -22,6 +22,7 @@
 //
 
 import UIKit
+import SVGKit
 
 class NCViewerImagePageContainer: UIViewController, UIGestureRecognizerDelegate {
 
@@ -196,13 +197,70 @@ class NCViewerImagePageContainer: UIViewController, UIGestureRecognizerDelegate
         }
     }
     
-    func getImageMetadata(_ metadata: tableMetadata) -> UIImage {
+    func getImageMetadata(_ metadata: tableMetadata) -> UIImage? {
                 
-        if FileManager().fileExists(atPath: CCUtility.getDirectoryProviderStorageIconOcId(metadata.ocId, etag: metadata.etag)) {
-            return UIImage(contentsOfFile: CCUtility.getDirectoryProviderStorageIconOcId(metadata.ocId, etag: metadata.etag))!
+        if let image = getImage(metadata: metadata) {
+            return image
+        }
+        
+        if CCUtility.fileProviderStoragePreviewIconExists(metadata.ocId, etag: metadata.etag) {
+            if let imagePath = CCUtility.getDirectoryProviderStoragePreviewOcId(metadata.ocId, etag: metadata.etag) {
+                return UIImage.init(contentsOfFile: imagePath)
+            } 
+        }
+        
+        return NCCollectionCommon.images.cellFileImage
+    }
+    
+    private func getImage(metadata: tableMetadata) -> UIImage? {
+        
+        let ext = CCUtility.getExtension(metadata.fileNameView)
+        var image: UIImage?
+        
+        if CCUtility.fileProviderStorageSize(metadata.ocId, fileNameView: metadata.fileNameView) > 0 && metadata.typeFile == k_metadataTypeFile_image {
+           
+            let previewPath = CCUtility.getDirectoryProviderStoragePreviewOcId(metadata.ocId, etag: metadata.etag)!
+            let imagePath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView)!
+            
+            if ext == "GIF" {
+                if !FileManager().fileExists(atPath: previewPath) {
+                    CCGraphics.createNewImage(from: metadata.fileNameView, ocId: metadata.ocId, etag: metadata.etag, typeFile: metadata.typeFile)
+                }
+                image = UIImage.animatedImage(withAnimatedGIFURL: URL(fileURLWithPath: imagePath))
+            } else if ext == "SVG" {
+                if let svgImage = SVGKImage(contentsOfFile: imagePath) {
+                    let scale = svgImage.size.height / svgImage.size.width
+                    svgImage.size = CGSize(width: CGFloat(k_sizePreview), height: (CGFloat(k_sizePreview) * scale))
+                    if let image = svgImage.uiImage {
+                        if !FileManager().fileExists(atPath: previewPath) {
+                            do {
+                                try image.pngData()?.write(to: URL(fileURLWithPath: previewPath), options: .atomic)
+                            } catch { }
+                        }
+                        return image
+                    } else {
+                        return nil
+                    }
+                } else {
+                    return nil
+                }
+            } else {
+                if !FileManager().fileExists(atPath: previewPath) {
+                    CCGraphics.createNewImage(from: metadata.fileNameView, ocId: metadata.ocId, etag: metadata.etag, typeFile: metadata.typeFile)
+                }
+                image = UIImage.init(contentsOfFile: imagePath)
+            }
+            
         } else {
-            return NCCollectionCommon.images.cellFileImage
+            
+            // AUTOMATIC DOWNLOAD FOR GIF
+            
+            if (ext == "GIF" || ext == "SVG") && metadata.session == "" {
+                NotificationCenter.default.postOnMainThread(name: k_notificationCenter_menuDownloadImage, userInfo: ["metadata": metadata])
+            }
         }
+        
+        return image
     }
     
     //MARK: - Action

+ 5 - 3
iOSClient/Viewer/NCViewerImage/NCViewerImageZoom.swift

@@ -34,7 +34,7 @@ class NCViewerImageZoom: UIViewController {
         
     weak var delegate: NCViewerImagePageContainer?
     
-    var image: UIImage = UIImage()
+    var image: UIImage?
     var metadata: tableMetadata = tableMetadata()
     var index: Int = 0
     var doubleTapGestureRecognizer: UITapGestureRecognizer = UITapGestureRecognizer()
@@ -52,8 +52,10 @@ class NCViewerImageZoom: UIViewController {
         scrollView.delegate = self
         scrollView.contentInsetAdjustmentBehavior = .never
         
-        imageView.image = image
-        imageView.frame = CGRect(x: imageView.frame.origin.x, y: imageView.frame.origin.y, width: image.size.width, height: image.size.height)
+        if let image = image {
+            imageView.image = image
+            imageView.frame = CGRect(x: imageView.frame.origin.x, y: imageView.frame.origin.y, width: image.size.width, height: image.size.height)
+        }
         
         if NCManageDatabase.sharedInstance.isLivePhoto(metadata: metadata) != nil {
             statusViewImage.image = CCGraphics.changeThemingColorImage(UIImage.init(named: "livePhoto"), width: 100, height: 100, color: .gray)