from flask import Flask, request, jsonify, send_from_directory, Response import uuid # from change_detect import start import requests from PIL import Image from io import BytesIO import os app = Flask(__name__) # 设置静态文件夹(如果您想指定路径) app.config['UPLOAD_FOLDER'] = 'predict/output' host = 'http://192.168.60.2' uploadPath = 'predict/upload/' outputPath = 'predict/output/' # GET 请求接口示例 @app.route('/api/get_data', methods=['GET']) def get_data(): # 获取请求参数 param = request.args.get('param', default='default_value') # 返回 JSON 响应 return jsonify({ "message": "GET 请求成功", "param": param }) # POST 上传单张图片 @app.route('/api/upload_single_image', methods=['POST']) def upload_single_image(): # 获取上传的文件 img = request.files['img'] # 文件夹不存在则创建 if not os.path.exists(uploadPath): os.makedirs(uploadPath) # 保存文件 filePath = uploadPath + str(uuid.uuid4()) + img.filename img.save(filePath) return jsonify({ "message": "上传成功", "data": { "img": filePath } }) @app.route('/api/upload_single_image', methods=['POST']) def upload_single_image(): # 获取上传的文件 img = request.files['img'] # 文件夹不存在则创建 if not os.path.exists(uploadPath): os.makedirs(uploadPath) # 保存文件 filePath = uploadPath + str(uuid.uuid4()) + img.filename img.save(filePath) return jsonify({ "message": "上传成功", "data": { "img": filePath } }) @app.route('/api/upload_single_image', methods=['POST']) def upload_single_image(): # 获取上传的文件 img = request.files['img'] # 文件夹不存在则创建 if not os.path.exists(uploadPath): os.makedirs(uploadPath) # 保存文件 filePath = uploadPath + str(uuid.uuid4()) + img.filename img.save(filePath) return jsonify({ "message": "上传成功", "data": { "img": filePath } }) @app.route('/api/upload_single_image', methods=['POST']) def upload_single_image(): # 获取上传的文件 img = request.files['img'] # 文件夹不存在则创建 if not os.path.exists(uploadPath): os.makedirs(uploadPath) # 保存文件 filePath = uploadPath + str(uuid.uuid4()) + img.filename img.save(filePath) return jsonify({ "message": "上传成功", "data": { "img": filePath } }) @app.route('/api/upload_single_image', methods=['POST']) def upload_single_image(): # 获取上传的文件 img = request.files['img'] # 文件夹不存在则创建 if not os.path.exists(uploadPath): os.makedirs(uploadPath) # 保存文件 filePath = uploadPath + str(uuid.uuid4()) + img.filename img.save(filePath) return jsonify({ "message": "上传成功", "data": { "img": filePath } }) @app.route('/api/upload_single_image', methods=['POST']) def upload_single_image(): # 获取上传的文件 img = request.files['img'] # 文件夹不存在则创建 if not os.path.exists(uploadPath): os.makedirs(uploadPath) # 保存文件 filePath = uploadPath + str(uuid.uuid4()) + img.filename img.save(filePath) return jsonify({ "message": "上传成功", "data": { "img": filePath } }) # POST 上传图片 @app.route('/api/upload_image', methods=['POST']) def upload_image(): # 获取上传的文件 img1 = request.files['img1'] img2 = request.files['img2'] # 保存文件 filePath1 = uploadPath + str(uuid.uuid4()) + img1.filename filePath2 = uploadPath + str(uuid.uuid4()) + img2.filename img1.save(filePath1) img2.save(filePath2) return jsonify({ "message": "上传成功", "data": { "img1": filePath1, "img2": filePath2 } }) # POST 通过url保存图片到本地 @app.route('/api/save_image', methods=['POST']) def save_image(): # 获取图片路径 data = request.get_json() img1 = data['img1'] img2 = data['img2'] response1 = requests.get('http://192.168.60.63'+img1) if response1.status_code != 200: return jsonify({ "message": "图片1不存在", "data": { "img1": img1 } }) img1 = Image.open(BytesIO(response1.content)) img1Path = uploadPath + str(uuid.uuid4()) + '.png' img1.save(img1Path, format='PNG') response2 = requests.get('http://192.168.60.63'+img2) if response2.status_code != 200: return jsonify({ "message": "图片2不存在", "data": { "img2": img2 } }) img2 = Image.open(BytesIO(response2.content)) img2Path = uploadPath + str(uuid.uuid4()) + '.png' img2.save(img2Path, format='PNG') return jsonify({ "message": "保存成功", "data": { # "img1": img1Path, # "img2": img2Path, "img": 100, } }) # POST 分析图片 @app.route('/api/detect_image', methods=['POST']) def detect_image(): # 获取图片路径 data = request.get_json() img1 = data['img1'] img2 = data['img2'] getImgPath = start(img1, img2) return jsonify({ "message": "分析成功", "data": { "img": host+'/predict/'+getImgPath } }) # 访问静态文件 @app.route('/predict/output/') def view_file(filename): return send_from_directory(app.config['UPLOAD_FOLDER'], filename) # # 测试转发接口 # # 目标代理服务 URL # WMS_PROXY_URL = "http://192.168.60.52:9099/hardwareInfo/getRequestIp" # @app.route('/proxy/handle/22d38ad36d354a6fb8adc2fb378a66d6/siweiserver/wms', methods=['GET']) # def proxy_wms(): # # 从客户端请求中获取参数 # params = request.args.to_dict() # # 拼接 WMS 请求 URL # wms_url = WMS_PROXY_URL + "?" + \ # "&".join([f"{key}={value}" for key, value in params.items()]) # # 发送请求到目标 WMS 服务 # # 自定义 HTTP 头 # headers = { # 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0' # } # response = requests.get(wms_url, headers=headers, stream=True) # # 返回目标服务的响应给客户端 # return Response(response.iter_content(chunk_size=1024), content_type=response.headers['Content-Type']) if __name__ == '__main__': app.run(debug=True, host='0.0.0.0', port=4100)