Files
DP/temp_backup/Server_redundant/tempdemo/psmark/Tab6.py
zuowei1216 12395d8eca newrun
2025-12-30 14:46:22 +08:00

226 lines
8.5 KiB
Python

import json
import os
#import replicate
import requests
from PyQt5 import QtWidgets, QtGui, QtCore
# from dotenv import load_dotenv
import os
# load_dotenv() # 加载 .env 文件中的环境变量
url = 'http://43.139.183.222:5000'
class ImportPDFDialog6(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.initUI()
self.processed_image_path = None # 存储处理后的图片路径
def initUI(self):
self.setWindowTitle('图像处理参数输入')
# 布局
layout = QtWidgets.QVBoxLayout()
# 文件选择行
self.file_input = QtWidgets.QLineEdit(self)
# self.file_input.setPlaceholderText("选择文件路径 (如 1.jpg)")
layout.addWidget(self.file_input)
self.browse_button = QtWidgets.QPushButton('浏览', self)
self.browse_button.clicked.connect(self.browse_file)
layout.addWidget(self.browse_button)
self.prompt_input = QtWidgets.QLineEdit(self)
self.prompt_input.setPlaceholderText("提示词 ")
layout.addWidget(self.prompt_input)
self.creativity_input = QtWidgets.QDoubleSpinBox(self)
self.creativity_input.setRange(0, 1)
self.creativity_input.setSingleStep(0.01)
self.creativity_input.setValue(0.35) # 默认值
layout.addWidget(QtWidgets.QLabel("创造力 (0 - 3):"))
layout.addWidget(self.creativity_input)
self.resemblance_input = QtWidgets.QDoubleSpinBox(self)
self.resemblance_input.setRange(0, 3)
self.resemblance_input.setSingleStep(0.01)
self.resemblance_input.setValue(0.6) # 默认值
layout.addWidget(QtWidgets.QLabel("相似度 (0 - 3):"))
layout.addWidget(self.resemblance_input)
self.scale_factor_input = QtWidgets.QSpinBox(self)
self.scale_factor_input.setRange(2, 8)
self.scale_factor_input.setValue(2) # 默认值
layout.addWidget(QtWidgets.QLabel("放大倍数:"))
layout.addWidget(self.scale_factor_input)
self.submit_button = QtWidgets.QPushButton('提交', self)
self.submit_button.clicked.connect(self.submit)
layout.addWidget(self.submit_button)
# 合并图片显示和处理结果区域
self.output_area = QtWidgets.QVBoxLayout()
self.image_label = QtWidgets.QLabel(self)
# self.image_label.setText("加载的图片将显示在这里")
self.image_label.setAlignment(QtCore.Qt.AlignCenter)
self.output_area.addWidget(self.image_label)
self.result_display = QtWidgets.QTextEdit(self)
self.result_display.setReadOnly(True)
self.output_area.addWidget(QtWidgets.QLabel("处理结果:"))
self.output_area.addWidget(self.result_display)
layout.addLayout(self.output_area)
# 下载按钮
self.download_button = QtWidgets.QPushButton('下载', self)
self.download_button.clicked.connect(self.download_image)
self.download_button.setEnabled(False) # 初始不可用
layout.addWidget(self.download_button)
self.setLayout(layout)
def browse_file(self):
options = QtWidgets.QFileDialog.Options()
file_name, _ = QtWidgets.QFileDialog.getOpenFileName(self, "选择图像文件", "", "Image Files (*.png *.jpg *.jpeg *.bmp)", options=options)
if file_name:
self.file_input.setText(file_name)
self.display_image(file_name) # 显示选中的图片
def display_image(self, file_path):
pixmap = QtGui.QPixmap(file_path)
self.image_label.setPixmap(pixmap.scaled(300, 300, QtCore.Qt.KeepAspectRatio))
def upload_image(self, url, file_path, json_data):
imgurl = url + "/upload"
with open(file_path, 'rb') as file:
files = {'file': file}
data = {'data': json.dumps(json_data)} # 将 JSON 数据转换为字符串
response = requests.post(imgurl, files=files, data=data)
print(response.status_code)
response_json = response.json() # 先解析 JSON 响应
print(response_json) # 打印响应内容以检查其格式
# 确保响应是一个列表,并且至少有一个元素
if isinstance(response_json, list) and len(response_json) > 0:
self.processed_image_path = response_json[0] # 从列表中获取 URL
else:
# 处理不符合预期的情况
print("Unexpected response format:", response_json)
return
self.result_display.setPlainText(str(response_json)) # 显示处理结果
self.download_button.setEnabled(True) # 启用下载按钮
self.display_processed_image() # 显示处理后的图片
def submit(self):
try:
creativity = self.creativity_input.value()
file_path = self.file_input.text()
urlprompt = self.prompt_input.text() + " best quality, highres, <lora:more_details:0.5> <lora:SDXLrender_v2.0:1>"
prompt = urlprompt
resemblance = self.resemblance_input.value()
scale_factor = self.scale_factor_input.value()
if not os.path.exists(file_path):
raise ValueError("文件不存在,请选择有效的文件。")
input_data = {
"seed": 1337,
"prompt": prompt,
"dynamic": 6,
"handfix": "disabled",
"pattern": False,
"sharpen": 0,
"sd_model": "juggernaut_reborn.safetensors [338b85bc4f]",
"scheduler": "DPM++ 3M SDE Karras",
"creativity": creativity,
"lora_links": "",
"downscaling": False,
"resemblance": resemblance,
"scale_factor": scale_factor,
"tiling_width": 112,
"tiling_height": 144,
"output_format": "png",
"custom_sd_model": "",
"negative_prompt": "(worst quality, low quality, normal quality:2) JuggernautNegative-neg",
"num_inference_steps": 18,
"downscaling_resolution": 768
}
# 确保调用时只传递三个参数
self.upload_image(url, file_path, input_data)
except Exception as e:
QtWidgets.QMessageBox.critical(self, "错误", str(e))
def run(url):
newurl = url + "/data"
data = {'key': 'value'} # 你要发送的数据
response = requests.post(newurl, json=data)
print(response.status_code) # 打印状态码
print(response.json()) # 打印返回的 JSON 数据
def run2(url):
newurl = url + "/dataimg"
data = {'key': 'value'} # 你要发送的数据
response = requests.post(newurl, json=data)
print(response.status_code) # 打印状态码
print(response.json()) # 打印返回的 JSON 数据
# if __name__ == '__main__':
# upload_image(url, '1.jpg', {'key': 'value'})
def display_processed_image(self):
# 下载并显示处理后的图片
response = requests.get(self.processed_image_path)
if response.status_code == 200:
pixmap = QtGui.QPixmap()
pixmap.loadFromData(response.content)
self.image_label.setPixmap(pixmap.scaled(300, 300, QtCore.Qt.KeepAspectRatio))
def download_image(self):
if self.processed_image_path:
image_url = self.processed_image_path
file_name, _ = QtWidgets.QFileDialog.getSaveFileName(self, "保存处理后的图片", "", "Image Files (*.png *.jpg *.jpeg)")
if file_name:
try:
response = requests.get(image_url)
response.raise_for_status() # 检查请求是否成功
with open(file_name, 'wb') as f:
f.write(response.content)
QtWidgets.QMessageBox.information(self, "成功", "图片下载完成!")
except requests.exceptions.RequestException as e:
QtWidgets.QMessageBox.critical(self, "错误", f"下载失败:{e}")
except Exception as e:
QtWidgets.QMessageBox.critical(self, "错误", f"文件保存失败:{e}")
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
# 创建并显示登录界面
# login_dialog = LoginDialog()
# if login_dialog.exec_() == QtWidgets.QDialog.Accepted:
# 只有在登录成功后才执行以下代码
ex = ImportPDFDialog6()
ex.show()
sys.exit(app.exec_())