TSAIListPhotoGeneratorVM.swift 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. //
  2. // TSAIListPhotoGeneratorVM.swift
  3. // TSLiveWallpaper
  4. //
  5. // Created by 100Years on 2025/6/11.
  6. //
  7. //import Alamofire
  8. //let actionInfoDictVideo:[String:Any] = [
  9. // "actionType":"image_animation",
  10. // "comments": "Success",
  11. // "costTime":11,
  12. // "createdTimestamp":1744972580,
  13. // "id":32743,
  14. // "percent":1,
  15. // "request":"{\\\"imageUrl\\\": \\\"https://be-aigc.oss-cn-shanghai.aliyuncs.com/1981095e-b810-4eef-923b-5540350ae2d7.jpeg\\\", \\\"countryCode\\\": \\\"CN\\\", \\\"ip\\\": \\\"120.229.53.7\\\"}",
  16. // "response": "{\\\"resultUrl\\\": \\\"https://be-aigc.s3-accelerate.amazonaws.com/4e0da626-1de7-4c2e-9be2-3e6d0742a28e.mp4\\\"}",
  17. // "status":"success"
  18. //]
  19. //
  20. //
  21. //class TSAIListPhotoGeneratorBaseVM {
  22. //
  23. // var uploadRequest:Request?
  24. // var creatRequest:Request?
  25. // var queryRequest:Request?
  26. // var stopNetwork = false
  27. //
  28. // @Published var stateDatauPblished:(TSProgressState,TSActionInfoModel?) = (TSProgressState.none,nil)
  29. //
  30. // var imageUrl:String?
  31. // var imageUrls:[String]?
  32. // var generatorModel:TSAIListPhotoGeneratorModel
  33. // init(generatorModel:TSAIListPhotoGeneratorModel) {
  34. // self.generatorModel = generatorModel
  35. // }
  36. //
  37. // func uploadAndCreatImage() {
  38. // //上传多个图片
  39. // if let _ = generatorModel.upLoadImages {
  40. // uploadImagesAndCreat()
  41. // return
  42. // }
  43. // //上传单个图片
  44. // if let imageUrl = imageUrl,imageUrl.contains("http") {
  45. // creatImage()
  46. // return
  47. // }
  48. //
  49. // stopNetwork = false
  50. // stateDatauPblished = (.start,nil)
  51. //
  52. // stateDatauPblished = (.progressString(uploadingPhoto(progress: 0.0)),nil)
  53. // uploadRequest = TSNetworkShared.uploadImage(upLoadImage: generatorModel.upLoadImage, maxKb: generatorModel.generatorStyle.imageMaxKb) { [weak self] progress in
  54. // guard let self = self else { return }
  55. //
  56. // stateDatauPblished = (.progressString(uploadingPhoto(progress: progress)),nil)
  57. //
  58. // } completion: { [weak self] data, error in
  59. // guard let self = self else { return }
  60. // if let error = error {
  61. // imageUrl = nil
  62. // self.stateDatauPblished = (TSProgressState.getFailed(error.tsDesc,error.tsCode),nil)
  63. // }else{
  64. // if let string = data as? String {
  65. // imageUrl = string
  66. // creatImage()
  67. // }
  68. // }
  69. // }
  70. // }
  71. //
  72. // private func uploadImagesAndCreat() {
  73. //
  74. // if let imageUrls = imageUrls{
  75. // creatImage()
  76. // return
  77. // }
  78. // guard let upLoadImages = generatorModel.upLoadImages else { return }
  79. // var uploadImageUrls:[String] = []
  80. // let progressRatio:Float = 1.0/Float(upLoadImages.count)//进度分割比例
  81. // var totalProgress:Float = 0.0//总进度
  82. // stopNetwork = false
  83. // stateDatauPblished = (.start,nil)
  84. // stateDatauPblished = (.progressString(uploadingPhoto(progress: 0.0)),nil)
  85. //
  86. // let group = DispatchGroup()
  87. // for image in upLoadImages {
  88. // group.enter()
  89. // uploadRequest = TSNetworkShared.uploadImage(upLoadImage: image, maxKb: generatorModel.generatorStyle.imageMaxKb) { [weak self] progress in
  90. // guard let self = self else { return }
  91. // totalProgress+=progress*progressRatio
  92. // stateDatauPblished = (.progressString(uploadingPhoto(progress: totalProgress)),nil)
  93. // } completion: { [weak self] data, error in
  94. // guard let self = self else { return }
  95. // if let error = error {
  96. // self.imageUrls = nil
  97. // self.stateDatauPblished = (TSProgressState.getFailed(error.tsDesc,error.tsCode),nil)
  98. // }else{
  99. // if let string = data as? String {
  100. // uploadImageUrls.append(string)
  101. // }
  102. // }
  103. // group.leave()
  104. // }
  105. // }
  106. //
  107. // group.notify(queue: .main) {
  108. // if uploadImageUrls.count == upLoadImages.count {
  109. // self.imageUrls = uploadImageUrls
  110. // self.imageUrl = ""
  111. // self.creatImage()
  112. // }
  113. // }
  114. // }
  115. //
  116. //
  117. // func creatImage() {
  118. // guard let imageUrl = imageUrl else { return }
  119. // stopNetwork = false
  120. // stateDatauPblished = (.start,nil)
  121. // stateDatauPblished = (.progressString(generating(progress: 0.0)),nil)
  122. //
  123. // var urlType:TSNeURLType = .imageRewrite
  124. // var postDict:[String:Any] = [
  125. // "device":getUserInfoJsonString(),
  126. // "imageUrl":imageUrl,
  127. // "model": generatorModel.generatorStyle.aiModel
  128. // ]
  129. // switch generatorModel.generatorStyle {
  130. // case .enhance:
  131. // urlType = .imageRewrite
  132. // postDict["prompt"] = "把图片变清晰"
  133. // case .colorize:
  134. // urlType = .imageRewrite
  135. // postDict["prompt"] = "Add suitable colors to photos"
  136. // case .descratch:
  137. // urlType = .imageRewrite
  138. // postDict["prompt"] = "Remove the photo's scratches and dirt"
  139. // case .enlighten:
  140. // urlType = .imageRewrite
  141. // postDict["prompt"] = "Adjust the light and darkness of the photo to make the overall look coordinated"
  142. //
  143. // case .recreate:
  144. // urlType = .imageRewrite
  145. // postDict["prompt"] = "Recreate damaged portraits and added suitable color for photo"
  146. // }
  147. //
  148. // creatRequest = TSNetworkShared.post(urlType: urlType,parameters: postDict) { [weak self] data,error in
  149. // guard let self = self else { return }
  150. //
  151. // if let dataDict = kNetWorkCodeSuccess(data: data),
  152. // let actionId = dataDict["actionId"] as? Int{
  153. // if stopNetwork == false {
  154. // self.getActionInfo(action_id:actionId)
  155. // }
  156. // }else{
  157. // if let error = error {
  158. // self.stateDatauPblished = (TSProgressState.getFailed(error.tsDesc,error.tsCode),nil)
  159. // }else{
  160. // self.stateDatauPblished = (.generalNormalFailed,nil)
  161. // }
  162. // }
  163. // }
  164. // }
  165. //
  166. // func getActionInfo(action_id:Int){
  167. // queryRequest = TSNetworkShared.get(urlType: .actionInfo,parameters: ["action_id":action_id]) { [weak self] data,error in
  168. // guard let self = self else { return }
  169. // if let result = kNetWorkResultSuccess(data: data) {
  170. // if let genmojiModel = TSActionInfoModel(JSON: result) {
  171. // switch genmojiModel.actionStatus {
  172. // case .success:
  173. // if let _ = URL(string:genmojiModel.response.resultUrl) {
  174. //// if generatorModel.generatorStyle == .photoLive {
  175. //// downloadVideo(urlString: genmojiModel.response.resultUrl) { url in
  176. //// if let url = url {
  177. ////
  178. //// genmojiModel.videoPath = url.path.documentLastURLString
  179. //// if let videoImage = kGetVideoThumbnail(from: url) {
  180. //// let imageSavePath = url.deletingPathExtension().path + ".jpeg"
  181. //// videoImage.saveToFile(at:URL(fileURLWithPath:imageSavePath))
  182. //// genmojiModel.videoThumbnailPath = imageSavePath.documentLastURLString
  183. //// }
  184. ////
  185. //// self.stateDatauPblished = (.success(nil),genmojiModel)
  186. //// }else{
  187. //// self.stateDatauPblished = (.generalNormalFailed,nil)
  188. //// }
  189. //// }
  190. //// }else {
  191. //
  192. // let group = DispatchGroup()
  193. //// group.enter()
  194. //// downloadImage(urlString: genmojiModel.request.imageUrl) {
  195. //// group.leave()
  196. //// }
  197. //
  198. // TSImageStoreTool.storeImage(image: generatorModel.upLoadImage, urlString: genmojiModel.request.imageUrl)
  199. //
  200. // group.enter()
  201. // downloadImage(urlString: genmojiModel.response.resultUrl) {
  202. // group.leave()
  203. // }
  204. //
  205. // group.notify(queue: .main) {
  206. // self.stateDatauPblished = (.success(nil),genmojiModel)
  207. // }
  208. //
  209. //// }
  210. // }else{
  211. // self.stateDatauPblished = (.success(nil),genmojiModel)
  212. // }
  213. //
  214. // case .failed:
  215. // self.stateDatauPblished = (TSProgressState.getFailed(genmojiModel.response.codeErrorMsg,genmojiModel.response.code),nil)
  216. // default:
  217. // stateDatauPblished = (.progressString(generating(progress: genmojiModel.percent)),nil)
  218. // if stopNetwork == false {
  219. // kDelayOnMainThread(1.0) {
  220. // self.getActionInfo(action_id: action_id)
  221. // }
  222. // }
  223. // }
  224. // }
  225. // }else{
  226. // if let error = error {
  227. // self.stateDatauPblished = (TSProgressState.getFailed(error.tsDesc,error.tsCode),nil)
  228. // }else{
  229. // self.stateDatauPblished = (.generalNormalFailed,nil)
  230. // }
  231. // }
  232. // }
  233. // }
  234. //
  235. // func downloadImage(urlString:String,completion:@escaping ()->Void){
  236. // TSImageStoreTool.downloadImageWithProgress(urlString: urlString) { [weak self] progress in
  237. // guard let self = self else { return }
  238. //
  239. // let progressInt = Int(progress*10.0)
  240. // let progressString = generatingText + " \(90 + progressInt)%"
  241. // stateDatauPblished = (.progressString(progressString),nil)
  242. // dePrint("生成后图片下载进度: \(progress)")
  243. // } completion: { image in
  244. // completion()
  245. // }
  246. // }
  247. // func downloadVideo(urlString:String,completion:@escaping (URL?)->Void){
  248. // TSDownloadManager.getDownLoadVideo(urlString: urlString) { progress in
  249. // let progressInt = Int(progress*10.0)
  250. // let progressString = self.generatingText + " \(90 + progressInt)%"
  251. // self.stateDatauPblished = (.progressString(progressString),nil)
  252. // dePrint("生成后视频下载进度: \(progress)")
  253. // } complete: { url, _ in
  254. // completion(url)
  255. // }
  256. // }
  257. //
  258. // func cancelAllRequest(){
  259. // creatRequest?.cancel()
  260. // queryRequest?.cancel()
  261. // stopNetwork = true
  262. // }
  263. //
  264. // func uploadingPhoto(progress:Float) -> String {
  265. // //Uploading Photo 0%-100%
  266. // var progressInt = Int(progress*100)
  267. // if progressInt > 99 {
  268. // progressInt = 99
  269. // }
  270. // return "Uploading Photo".localized + " \(progressInt)%"
  271. // }
  272. //
  273. // func generating(progress:Float) -> String {
  274. // let progress = progress*(0.9) // 预留 10% 进度给图片下载
  275. // //Processing 0%-100%
  276. // var progressInt = Int(progress*100)
  277. //
  278. // if progressInt > 99 {
  279. // progressInt = 99
  280. // }
  281. //
  282. // return generatingText + " \(progressInt)%"
  283. // }
  284. //
  285. //
  286. // var generatingText:String{
  287. // return "Processing".localized
  288. // }
  289. //}