DrawViewController.swift 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. //
  2. // DrawViewController.swift
  3. // AIPaint
  4. //
  5. // Created by Fengyu He on 2022/11/29.
  6. //
  7. import UIKit
  8. import SnapKit
  9. class DrawViewController: UIViewController {
  10. lazy var generateView: UIView = {
  11. let view = UIView()
  12. view.backgroundColor = .clear
  13. view.layer.borderWidth = 1
  14. view.layer.borderColor = UIColor.black.cgColor
  15. return view
  16. }()
  17. lazy var promptTextField: UITextField = {
  18. let textField = UITextField()
  19. textField.placeholder = "请输入你的作品的组成元素,以空格分割。"
  20. textField.layer.borderWidth = 1
  21. textField.layer.borderColor = UIColor.black.cgColor
  22. return textField
  23. }()
  24. lazy var negativePromptTextField: UITextField = {
  25. let textField = UITextField()
  26. textField.placeholder = "请输入你不想在作品中看到的元素,以空格分割。"
  27. textField.layer.borderWidth = 1
  28. textField.layer.borderColor = UIColor.black.cgColor
  29. return textField
  30. }()
  31. lazy var generateButton: UIButton = {
  32. let button = UIButton()
  33. button.layer.backgroundColor = UIColor.blue.cgColor
  34. button.addTarget(self, action: #selector(generateAction), for: .touchUpInside)
  35. button.setTitle("生成图片", for: .normal)
  36. return button
  37. }()
  38. lazy var generateImage: UIImageView = {
  39. let imageView = UIImageView()
  40. imageView.layer.borderWidth = 1
  41. imageView.layer.borderColor = UIColor.black.cgColor
  42. return imageView
  43. }()
  44. var prompt = ""
  45. var negativePrompt = ""
  46. override func viewDidLoad() {
  47. super.viewDidLoad()
  48. view.backgroundColor = .white
  49. view.addSubview(generateView)
  50. generateView.addSubview(promptTextField)
  51. generateView.addSubview(negativePromptTextField)
  52. generateView.addSubview(generateButton)
  53. view.addSubview(generateImage)
  54. generateView.snp.makeConstraints { (make) in
  55. make.top.equalTo(view.safeAreaLayoutGuide.snp.top)
  56. make.width.equalTo(view.safeAreaLayoutGuide.snp.width)
  57. make.height.equalTo(view.safeAreaLayoutGuide.snp.height).multipliedBy(0.35)
  58. make.centerX.equalTo(view.safeAreaLayoutGuide.snp.centerX)
  59. }
  60. promptTextField.snp.makeConstraints { (make) in
  61. make.top.equalTo(generateView.snp.top).offset(5)
  62. make.width.equalTo(generateView.snp.width).multipliedBy(0.95)
  63. make.height.equalTo(generateView.snp.height).multipliedBy(0.35)
  64. make.centerX.equalTo(generateView.snp.centerX)
  65. }
  66. negativePromptTextField.snp.makeConstraints { (make) in
  67. make.top.equalTo(promptTextField.snp.bottom).offset(5)
  68. make.width.equalTo(generateView.snp.width).multipliedBy(0.95)
  69. make.height.equalTo(generateView.snp.height).multipliedBy(0.35)
  70. make.centerX.equalTo(generateView.snp.centerX)
  71. }
  72. generateButton.snp.makeConstraints { (make) in
  73. make.top.equalTo(negativePromptTextField.snp.bottom).offset(5)
  74. make.width.equalTo(generateView.snp.width).multipliedBy(0.95)
  75. make.height.equalTo(generateView.snp.height).multipliedBy(0.2)
  76. make.centerX.equalTo(generateView.snp.centerX)
  77. }
  78. generateImage.snp.makeConstraints { (make) in
  79. make.top.equalTo(generateView.snp.bottom).offset(10)
  80. make.width.equalTo(view.safeAreaLayoutGuide.snp.width)
  81. make.height.equalTo(view.safeAreaLayoutGuide.snp.height).multipliedBy(0.60)
  82. make.centerX.equalTo(view.safeAreaLayoutGuide.snp.centerX)
  83. }
  84. }
  85. @objc func generateAction() {
  86. print("in func generateAction")
  87. prompt = promptTextField.text!
  88. negativePrompt = negativePromptTextField.text!
  89. let url = URL(string: "https://aipaint.hefengyu.org/api/predict/")
  90. var request = URLRequest(url: url!)
  91. request.httpMethod = "POST"
  92. let postData: [String: Any] = ["fn_index":50,"data":["backed","shit","None","None",20,"Euler a",false,false,1,1,7,-1,-1,0,0,0,false,512,512,false,0.7,0,0,"None",false,false,false,"","Seed","","Nothing","",true,false,false,"null","",""]]
  93. let jsonData = try? JSONSerialization.data(withJSONObject: postData, options: [])
  94. request.httpBody = jsonData
  95. print(String(data: jsonData!, encoding: .utf8)!)
  96. let dataTask = URLSession.shared.dataTask(with: request) { (data, request, error) in
  97. do {
  98. let jsonData = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! NSDictionary
  99. print(jsonData)
  100. } catch {
  101. print("JSONSerialization error:", error)
  102. }
  103. }
  104. dataTask.resume()
  105. }
  106. override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
  107. promptTextField.resignFirstResponder()
  108. negativePromptTextField.resignFirstResponder()
  109. }
  110. }