123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- //
- // KMAdvertisementImage.swift
- // KMAdvertisement
- //
- // Created by lizhe on 2023/1/12.
- // 图片缓存
- import Foundation
- import AppKit
- typealias KMAdvertisementImageCompletion = (_ image: NSImage) -> Void
- @objc class KMAdvertisementImage: NSObject {
- @objc static func imageWithURL(url : URL?, completion: KMAdvertisementImageCompletion?) -> NSImage {
- var image: NSImage = NSImage()
- if url != nil {
- //获取缓存图片是否存在
- let imageString: String = KMAdvertisementImageCache.fetchImageCache(url: url!)
- if imageString != "" {
- //存在获取本地图片
- image = NSImage.init(contentsOfFile: imageString) ?? NSImage()
- if completion != nil {
- completion!(image)
- }
- } else {
- let path = KMAdvertisementImageCache.kImageCacheFilePath
- let filePath = (path as String) + "/" + (NSString(string: NSString(string: url!.path).lastPathComponent) as String)
- KMAdvertisementRequestServer.requestServer.downLoad(inputURL: url!, filePath: filePath) { progress in
-
- } completion: { task, responseObject, error in
- if completion != nil {
- DispatchQueue.main.async {
- image = NSImage.init(contentsOfFile: KMAdvertisementImageCache.fetchImageCache(url: url!)) ?? NSImage()
- completion!(image)
- }
- }
- }
- }
- }
- return image
- }
- }
- class KMAdvertisementImageCache: NSObject {
- static let kImageCacheFilePath: NSString = NSTemporaryDirectory() + "Advertisement/ImageCache" as NSString
-
- static func saveImageCache(image: NSImage, name: String) {
- if image.size.width != 0 {
-
- let path = KMAdvertisementImageCache.kImageCacheFilePath
- let filePath = (path as String) + "/" + NSString(string: name).deletingPathExtension + ".png"
- if (!FileManager.default.fileExists(atPath: path as String)) {
- try?FileManager.default.createDirectory(atPath: path as String, withIntermediateDirectories: true, attributes: nil)
- }
-
- #if os(iOS)
-
- #elseif os(OSX)
- let cgimage = image.cgImage(forProposedRect: nil, context: nil, hints: nil)
- if cgimage != nil {
- let rep = NSBitmapImageRep.init(cgImage: cgimage!)
- try?rep.representation(using: .png, properties: [:])?.write(to: URL(fileURLWithPath: filePath))
- } else {
- try?image.tiffRepresentation?.write(to: URL(fileURLWithPath: filePath))
- }
- print(path)
- #endif
- }
- }
-
- static func fetchImageCache(url: URL) -> String {
- if (!FileManager.default.fileExists(atPath: kImageCacheFilePath as String)) {
- try?FileManager.default.createDirectory(atPath: kImageCacheFilePath as String, withIntermediateDirectories: true, attributes: nil)
- }
-
- var string = ""
- let name = NSString(string: url.path).lastPathComponent
- let manager = FileManager.default
- let contentsOfPath = try? manager.contentsOfDirectory(atPath: kImageCacheFilePath as String)
-
- if (contentsOfPath!.contains(name)) {
- string = (kImageCacheFilePath as String) + "/" + name
- }
- return string
- }
- }
|