|
@@ -29,6 +29,7 @@ class DrawViewController: UIViewController, UIScrollViewDelegate, UIImagePickerC
|
|
|
textField.placeholder = "请输入你的作品的组成元素,以空格分割。"
|
|
|
textField.backgroundColor = .white
|
|
|
textField.layer.cornerRadius = 14.0
|
|
|
+ textField.returnKeyType = .done
|
|
|
return textField
|
|
|
}()
|
|
|
|
|
@@ -37,6 +38,7 @@ class DrawViewController: UIViewController, UIScrollViewDelegate, UIImagePickerC
|
|
|
textField.placeholder = "请输入你不想在作品中看到的元素,以空格分割。"
|
|
|
textField.backgroundColor = .white
|
|
|
textField.layer.cornerRadius = 14.0
|
|
|
+ textField.returnKeyType = .done
|
|
|
return textField
|
|
|
}()
|
|
|
|
|
@@ -84,8 +86,8 @@ class DrawViewController: UIViewController, UIScrollViewDelegate, UIImagePickerC
|
|
|
|
|
|
lazy var uploadImage: UIImageView = {
|
|
|
var imageView = UIImageView()
|
|
|
-// let singleGusture = UITapGestureRecognizer(target: self, action: #selector(pickPhotoFromAlbum))
|
|
|
-// imageView.addGestureRecognizer(singleGusture)
|
|
|
+ let singleGusture = UITapGestureRecognizer(target: self, action: #selector(pickPhotoFromAlbum))
|
|
|
+ imageView.addGestureRecognizer(singleGusture)
|
|
|
imageView.isUserInteractionEnabled = true
|
|
|
return imageView
|
|
|
}()
|
|
@@ -100,6 +102,7 @@ class DrawViewController: UIViewController, UIScrollViewDelegate, UIImagePickerC
|
|
|
var painting: Painting?
|
|
|
let alertController = UIAlertController(title: "保存成功!", message: nil, preferredStyle: .alert)
|
|
|
let userDefaults = UserDefaults.standard
|
|
|
+ var pickedImage: UIImage?
|
|
|
|
|
|
override func viewDidLoad() {
|
|
|
super.viewDidLoad()
|
|
@@ -142,8 +145,8 @@ class DrawViewController: UIViewController, UIScrollViewDelegate, UIImagePickerC
|
|
|
generateView.snp.makeConstraints { (make) in
|
|
|
make.top.equalTo(drawModeView.contentLayoutGuide.snp.top)
|
|
|
make.centerX.equalTo(view.safeAreaLayoutGuide.snp.centerX)
|
|
|
- make.left.equalTo(drawModeView.contentLayoutGuide.snp.left)
|
|
|
- make.right.equalTo(drawModeView.contentLayoutGuide.snp.right)
|
|
|
+ make.left.equalTo(drawModeView.contentLayoutGuide.snp.left).offset(5)
|
|
|
+ make.right.equalTo(drawModeView.contentLayoutGuide.snp.right).offset(-5)
|
|
|
make.height.equalTo(drawModeView.contentLayoutGuide.snp.width).multipliedBy(0.75)
|
|
|
}
|
|
|
|
|
@@ -155,6 +158,8 @@ class DrawViewController: UIViewController, UIScrollViewDelegate, UIImagePickerC
|
|
|
make.centerX.equalTo(generateView.snp.centerX)
|
|
|
}
|
|
|
|
|
|
+ promptTextField.delegate = self
|
|
|
+
|
|
|
negativePromptTextField.snp.makeConstraints { (make) in
|
|
|
make.top.equalTo(promptTextField.snp.bottom).offset(5)
|
|
|
make.left.equalTo(generateView.snp.left).offset(5)
|
|
@@ -163,6 +168,8 @@ class DrawViewController: UIViewController, UIScrollViewDelegate, UIImagePickerC
|
|
|
make.centerX.equalTo(generateView.snp.centerX)
|
|
|
}
|
|
|
|
|
|
+ negativePromptTextField.delegate = self
|
|
|
+
|
|
|
generateButton.snp.makeConstraints { (make) in
|
|
|
make.top.equalTo(negativePromptTextField.snp.bottom).offset(5)
|
|
|
make.width.equalTo(generateView.snp.width).multipliedBy(0.97)
|
|
@@ -179,7 +186,7 @@ class DrawViewController: UIViewController, UIScrollViewDelegate, UIImagePickerC
|
|
|
make.left.equalTo(drawModeView.contentLayoutGuide.snp.left).offset(5)
|
|
|
make.right.equalTo(drawModeView.contentLayoutGuide.snp.right).offset(-5)
|
|
|
make.centerX.equalTo(drawModeView.contentLayoutGuide.snp.centerX)
|
|
|
- make.height.equalTo(imageUploadView.snp.width).multipliedBy(3)
|
|
|
+ make.height.equalTo(imageUploadView.snp.width).multipliedBy(0.4)
|
|
|
}
|
|
|
|
|
|
pic2PicLabel.snp.makeConstraints { (make) in
|
|
@@ -196,28 +203,26 @@ class DrawViewController: UIViewController, UIScrollViewDelegate, UIImagePickerC
|
|
|
make.right.equalTo(imageUploadView.snp.right).offset(-5)
|
|
|
}
|
|
|
|
|
|
-// drawModeView.addSubview(remindText)
|
|
|
-// drawModeView.addSubview(generateImage)
|
|
|
-
|
|
|
-// generateImage.snp.makeConstraints { (make) in
|
|
|
-// make.top.equalTo(imageUploadView.snp.bottom).offset(10)
|
|
|
-// make.width.equalTo(drawModeView.contentLayoutGuide.snp.width).offset(0.98)
|
|
|
-// make.centerX.equalTo(drawModeView.contentLayoutGuide.snp.centerX)
|
|
|
-// make.height.equalTo(800)
|
|
|
-// }
|
|
|
-//
|
|
|
-// remindText.snp.makeConstraints { (make) in
|
|
|
-// make.top.equalTo(generateImage.snp.top).offset(2)
|
|
|
-// make.width.equalTo(generateImage.snp.width)
|
|
|
-// make.height.equalTo(generateImage.snp.height).multipliedBy(0.40)
|
|
|
-// make.centerX.equalTo(generateImage.snp.centerX)
|
|
|
-// }
|
|
|
+ drawModeView.addSubview(remindText)
|
|
|
+ drawModeView.addSubview(generateImage)
|
|
|
+
|
|
|
+ generateImage.snp.makeConstraints { (make) in
|
|
|
+ make.top.equalTo(imageUploadView.snp.bottom).offset(10)
|
|
|
+ make.left.equalTo(drawModeView.contentLayoutGuide.snp.left).offset(5)
|
|
|
+ make.right.equalTo(drawModeView.contentLayoutGuide.snp.right).offset(-5)
|
|
|
+ make.centerX.equalTo(drawModeView.contentLayoutGuide.snp.centerX)
|
|
|
+ make.height.equalTo(generateImage.snp.width)
|
|
|
+ make.bottom.equalTo(drawModeView.contentLayoutGuide.snp.bottom)
|
|
|
+ }
|
|
|
+
|
|
|
+ remindText.snp.makeConstraints { (make) in
|
|
|
+ make.top.equalTo(generateImage.snp.top).offset(2)
|
|
|
+ make.width.equalTo(generateImage.snp.width)
|
|
|
+ make.height.equalTo(generateImage.snp.height).multipliedBy(0.40)
|
|
|
+ make.centerX.equalTo(generateImage.snp.centerX)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
-// override func viewDidLayoutSubviews() {
|
|
|
-// self.drawModeView.contentSize = CGSize(width: 500, height: 1500)
|
|
|
-// }
|
|
|
-
|
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
|
if !userDefaults.bool(forKey: UserDefaultKeys.UserInfo.isLogin) {
|
|
|
generateButton.setTitle("请登录后使用", for: .normal)
|
|
@@ -228,10 +233,6 @@ class DrawViewController: UIViewController, UIScrollViewDelegate, UIImagePickerC
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
|
|
- print("x:\(scrollView.contentOffset.x) y:\(scrollView.contentOffset.y)")
|
|
|
- }
|
|
|
-
|
|
|
func translatePrompt(prompt: String, negativePrompt: String, completion: @escaping (_ tranPrompt: String, _ tranNegativePrompt: String) -> Void) {
|
|
|
let APP_KEY = "3bb96f14d2af67ec"
|
|
|
let APP_SECRET = "SRQF1jGwAMuYciFK33KfyRGKa7B1x38u"
|
|
@@ -339,34 +340,66 @@ class DrawViewController: UIViewController, UIScrollViewDelegate, UIImagePickerC
|
|
|
guard let userID = userDefaults.string(forKey: UserDefaultKeys.UserInfo.userId) else {
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
- let postData: [String: String] = ["userId": userID, "prompt": prompt, "negPrompt": negativePrompt, "sessionHash": sessionHash]
|
|
|
-
|
|
|
- AF.request(APIs.Draw.Text2Pic, method: .post, parameters: postData, encoder: URLEncodedFormParameterEncoder.default).response { [self] response in
|
|
|
- switch response.result {
|
|
|
- case .success(let data):
|
|
|
- guard let json = try? JSON(data: data!) else {
|
|
|
- return
|
|
|
- }
|
|
|
- let imageAddr = json["result"].stringValue
|
|
|
- let addrProcess = imageAddr.replacingOccurrences(of: "\\", with: "/")
|
|
|
- let url = URL(string: addrProcess)
|
|
|
- generateImage.downloadedFrom(link: addrProcess)
|
|
|
- let dataTask = URLSession.shared.dataTask(with: url!) { [self] (data, response, error) in
|
|
|
- painting?.image = data
|
|
|
- saveContext()
|
|
|
+ if pickedImage != nil {
|
|
|
+ let imgBase64 = pickedImage?.pngData()?.base64EncodedString()
|
|
|
+
|
|
|
+ let imgStr = "data:image/png;base64," + imgBase64!
|
|
|
+ let postData: [String: String] = ["userId": userID, "img": imgStr, "prompt": prompt, "negPrompt": negativePrompt, "sessionHash": sessionHash]
|
|
|
+ AF.request(APIs.Draw.Pic2Pic, method: .post, parameters: postData, encoder: URLEncodedFormParameterEncoder.default).response { [self] response in
|
|
|
+ switch response.result {
|
|
|
+ case .success(let data):
|
|
|
+ guard let json = try? JSON(data: data!) else {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ let imageAddr = json["result"].stringValue
|
|
|
+ let addrProcess = imageAddr.replacingOccurrences(of: "\\", with: "/")
|
|
|
+ let url = URL(string: addrProcess)
|
|
|
+ generateImage.downloadedFrom(link: addrProcess)
|
|
|
+ let dataTask = URLSession.shared.dataTask(with: url!) { [self] (data, response, error) in
|
|
|
+ painting?.image = data
|
|
|
+ saveContext()
|
|
|
+ }
|
|
|
+ dataTask.resume()
|
|
|
+ DispatchQueue.main.async { [self] in
|
|
|
+ self.generateButton.backgroundColor = .blue
|
|
|
+ self.generateButton.isUserInteractionEnabled = true
|
|
|
+ }
|
|
|
+ break
|
|
|
+ case .failure(let error):
|
|
|
+ print(error)
|
|
|
+ break
|
|
|
}
|
|
|
- dataTask.resume()
|
|
|
- DispatchQueue.main.async { [self] in
|
|
|
- self.generateButton.backgroundColor = .blue
|
|
|
- self.generateButton.isUserInteractionEnabled = true
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ let postData: [String: String] = ["userId": userID, "prompt": prompt, "negPrompt": negativePrompt, "sessionHash": sessionHash]
|
|
|
+
|
|
|
+ AF.request(APIs.Draw.Text2Pic, method: .post, parameters: postData, encoder: URLEncodedFormParameterEncoder.default).response { [self] response in
|
|
|
+ switch response.result {
|
|
|
+ case .success(let data):
|
|
|
+ guard let json = try? JSON(data: data!) else {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ let imageAddr = json["result"].stringValue
|
|
|
+ let addrProcess = imageAddr.replacingOccurrences(of: "\\", with: "/")
|
|
|
+ let url = URL(string: addrProcess)
|
|
|
+ generateImage.downloadedFrom(link: addrProcess)
|
|
|
+ let dataTask = URLSession.shared.dataTask(with: url!) { [self] (data, response, error) in
|
|
|
+ painting?.image = data
|
|
|
+ saveContext()
|
|
|
+ }
|
|
|
+ dataTask.resume()
|
|
|
+ DispatchQueue.main.async { [self] in
|
|
|
+ self.generateButton.backgroundColor = .blue
|
|
|
+ self.generateButton.isUserInteractionEnabled = true
|
|
|
+ }
|
|
|
+ break
|
|
|
+ case .failure(let error):
|
|
|
+ print(error)
|
|
|
+ break
|
|
|
}
|
|
|
- break
|
|
|
- case .failure(let error):
|
|
|
- print(error)
|
|
|
- break
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
generateButton.backgroundColor = .gray
|
|
|
generateButton.isUserInteractionEnabled = false
|
|
@@ -394,6 +427,7 @@ class DrawViewController: UIViewController, UIScrollViewDelegate, UIImagePickerC
|
|
|
image = info[.originalImage] as? UIImage
|
|
|
}
|
|
|
uploadImage.image = image
|
|
|
+ pickedImage = image
|
|
|
picker.dismiss(animated: true)
|
|
|
}
|
|
|
|
|
@@ -483,3 +517,10 @@ class DrawViewController: UIViewController, UIScrollViewDelegate, UIImagePickerC
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+extension DrawViewController: UITextFieldDelegate {
|
|
|
+ func textFieldShouldReturn(_ textField: UITextField) -> Bool {
|
|
|
+ self.view?.endEditing(false)
|
|
|
+ return true
|
|
|
+ }
|
|
|
+}
|