NCUtility+Image.swift 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. //
  2. // NCUtility+Image.swift
  3. // Nextcloud
  4. //
  5. // Created by Henrik Storch on 17.03.22.
  6. // Copyright © 2022 Marino Faggiana. All rights reserved.
  7. //
  8. import UIKit
  9. import SVGKit
  10. import NCCommunication
  11. extension NCUtility {
  12. func getImageMetadata(_ metadata: tableMetadata, for size: CGFloat) -> UIImage? {
  13. if let image = getImage(metadata: metadata) {
  14. return image
  15. }
  16. if metadata.classFile == NCCommunicationCommon.typeClassFile.video.rawValue && !metadata.hasPreview {
  17. NCUtility.shared.createImageFrom(fileName: metadata.fileNameView, ocId: metadata.ocId, etag: metadata.etag, classFile: metadata.classFile)
  18. }
  19. if CCUtility.fileProviderStoragePreviewIconExists(metadata.ocId, etag: metadata.etag) {
  20. if let imagePreviewPath = CCUtility.getDirectoryProviderStoragePreviewOcId(metadata.ocId, etag: metadata.etag) {
  21. return UIImage(contentsOfFile: imagePreviewPath)
  22. }
  23. }
  24. if metadata.classFile == NCCommunicationCommon.typeClassFile.video.rawValue {
  25. return UIImage(named: "noPreviewVideo")?.image(color: .gray, size: size)
  26. } else if metadata.classFile == NCCommunicationCommon.typeClassFile.audio.rawValue {
  27. return UIImage(named: "noPreviewAudio")?.image(color: .gray, size: size)
  28. } else {
  29. return UIImage(named: "noPreview")?.image(color: .gray, size: size)
  30. }
  31. }
  32. func getImage(metadata: tableMetadata) -> UIImage? {
  33. let ext = CCUtility.getExtension(metadata.fileNameView)
  34. var image: UIImage?
  35. if CCUtility.fileProviderStorageExists(metadata) && metadata.classFile == NCCommunicationCommon.typeClassFile.image.rawValue {
  36. let previewPath = CCUtility.getDirectoryProviderStoragePreviewOcId(metadata.ocId, etag: metadata.etag)!
  37. let imagePath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView)!
  38. if ext == "GIF" {
  39. if !FileManager().fileExists(atPath: previewPath) {
  40. NCUtility.shared.createImageFrom(fileName: metadata.fileNameView, ocId: metadata.ocId, etag: metadata.etag, classFile: metadata.classFile)
  41. }
  42. image = UIImage.animatedImage(withAnimatedGIFURL: URL(fileURLWithPath: imagePath))
  43. } else if ext == "SVG" {
  44. if let svgImage = SVGKImage(contentsOfFile: imagePath) {
  45. svgImage.size = CGSize(width: NCGlobal.shared.sizePreview, height: NCGlobal.shared.sizePreview)
  46. if let image = svgImage.uiImage {
  47. if !FileManager().fileExists(atPath: previewPath) {
  48. do {
  49. try image.pngData()?.write(to: URL(fileURLWithPath: previewPath), options: .atomic)
  50. } catch { }
  51. }
  52. return image
  53. } else {
  54. return nil
  55. }
  56. } else {
  57. return nil
  58. }
  59. } else {
  60. NCUtility.shared.createImageFrom(fileName: metadata.fileNameView, ocId: metadata.ocId, etag: metadata.etag, classFile: metadata.classFile)
  61. image = UIImage(contentsOfFile: imagePath)
  62. }
  63. }
  64. return image
  65. }
  66. }