12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- //
- // NCUtility+Image.swift
- // Nextcloud
- //
- // Created by Henrik Storch on 17.03.22.
- // Copyright © 2022 Henrik Storch. All rights reserved.
- //
- // Author Henrik Storch <henrik.storch@nextcloud.com>
- //
- // This program is free software: you can redistribute it and/or modify
- // it under the terms of the GNU General Public License as published by
- // the Free Software Foundation, either version 3 of the License, or
- // (at your option) any later version.
- //
- // This program is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- // GNU General Public License for more details.
- //
- // You should have received a copy of the GNU General Public License
- // along with this program. If not, see <http://www.gnu.org/licenses/>.
- //
- import UIKit
- import SVGKit
- import NextcloudKit
- extension NCUtility {
- func getImageMetadata(_ metadata: tableMetadata, for size: CGFloat) -> UIImage? {
- if let image = getImage(metadata: metadata) {
- return image
- }
- if metadata.isVideo && !metadata.hasPreview {
- NCUtility.shared.createImageFrom(fileNameView: metadata.fileNameView, ocId: metadata.ocId, etag: metadata.etag, classFile: metadata.classFile)
- }
- if CCUtility.fileProviderStoragePreviewIconExists(metadata.ocId, etag: metadata.etag) {
- if let imagePreviewPath = CCUtility.getDirectoryProviderStoragePreviewOcId(metadata.ocId, etag: metadata.etag) {
- return UIImage(contentsOfFile: imagePreviewPath)
- }
- }
- if metadata.isVideo {
- return UIImage(named: "noPreviewVideo")?.image(color: .gray, size: size)
- } else if metadata.isAudio {
- return UIImage(named: "noPreviewAudio")?.image(color: .gray, size: size)
- } else {
- return UIImage(named: "noPreview")?.image(color: .gray, size: size)
- }
- }
- func getImage(metadata: tableMetadata) -> UIImage? {
- let ext = CCUtility.getExtension(metadata.fileNameView)
- var image: UIImage?
- if CCUtility.fileProviderStorageExists(metadata) && metadata.isImage {
- 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) {
- NCUtility.shared.createImageFrom(fileNameView: metadata.fileNameView, ocId: metadata.ocId, etag: metadata.etag, classFile: metadata.classFile)
- }
- image = UIImage.animatedImage(withAnimatedGIFURL: URL(fileURLWithPath: imagePath))
- } else if ext == "SVG" {
- if let svgImage = SVGKImage(contentsOfFile: imagePath) {
- svgImage.size = CGSize(width: NCGlobal.shared.sizePreview, height: NCGlobal.shared.sizePreview)
- 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 {
- NCUtility.shared.createImageFrom(fileNameView: metadata.fileNameView, ocId: metadata.ocId, etag: metadata.etag, classFile: metadata.classFile)
- image = UIImage(contentsOfFile: imagePath)
- }
- }
- return image
- }
- }
|