diff options
| author | omagdy7 <omar.professional8777@gmail.com> | 2024-05-15 23:23:57 +0300 |
|---|---|---|
| committer | omagdy7 <omar.professional8777@gmail.com> | 2024-05-15 23:23:57 +0300 |
| commit | cf857bc8af5ac3725f3bdb40dcdc80752595652f (patch) | |
| tree | 72545ee4f47e133af811b8fb37db405e9b624c1d /backend/app.py | |
| parent | 1aa678533f0d21f8696754b1a1f456827f249b1c (diff) | |
| download | cloudrender-cf857bc8af5ac3725f3bdb40dcdc80752595652f.tar.xz cloudrender-cf857bc8af5ac3725f3bdb40dcdc80752595652f.zip | |
Final version of backend and frontend
Diffstat (limited to 'backend/app.py')
| -rw-r--r-- | backend/app.py | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/backend/app.py b/backend/app.py deleted file mode 100644 index 4ed4954..0000000 --- a/backend/app.py +++ /dev/null @@ -1,77 +0,0 @@ -import os -from flask import Flask, request, jsonify -from flask_cors import CORS -import boto3 -import cv2 -import tempfile -import numpy as np - -app = Flask(__name__) -CORS(app) - -# Configure AWS S3 -s3 = boto3.client('s3') -BUCKET_NAME_ORIGINAL = "original-images-rapid-macaw" -BUCKET_NAME_PROCESSED = "processed-images-rapid-macaw" - -@app.route('/upload', methods=['POST']) -def upload_file(): - if 'image' not in request.files: - return jsonify({'error': 'No file provided'}), 400 - - file = request.files['image'] - operation = request.form.get('operation', 'edge_detection') # Default to edge detection - if file and allowed_file(file.filename): - # Save the file temporarily - temp_file = tempfile.NamedTemporaryFile(delete=False) - file.save(temp_file.name) - - # Upload to S3 original bucket - with open(temp_file.name, "rb") as img_data: - s3.put_object(Bucket=BUCKET_NAME_ORIGINAL, Key=file.filename, Body=img_data, ContentType="image/png") - - # Fetch the image from the original bucket - original_img_obj = s3.get_object(Bucket=BUCKET_NAME_ORIGINAL, Key=file.filename) - original_img_data = original_img_obj['Body'].read() - - # Process the image - processed_image_path = process_image(original_img_data, operation) - - # Upload processed image to S3 processed bucket - processed_filename = f"processed_{file.filename}" - with open(processed_image_path, "rb") as processed_img_data: - s3.put_object(Bucket=BUCKET_NAME_PROCESSED, Key=processed_filename, Body=processed_img_data, ContentType="image/png") - - # Clean up temporary files - os.remove(temp_file.name) - os.remove(processed_image_path) - - processed_file_url = f'https://{BUCKET_NAME_PROCESSED}.s3.amazonaws.com/{processed_filename}' - - return jsonify({'message': 'File processed and uploaded successfully', 'processed_file': processed_file_url}), 200 - else: - return jsonify({'error': 'Invalid file type'}), 400 - -def allowed_file(filename): - return '.' in filename and filename.rsplit('.', 1)[1].lower() in {'png', 'jpg', 'jpeg'} - -def process_image(image_data, operation): - # Convert image data to numpy array - nparr = np.frombuffer(image_data, np.uint8) - img = cv2.imdecode(nparr, cv2.IMREAD_COLOR) - - processed_img = img - - if operation == 'edge_detection': - processed_img = cv2.Canny(img, 100, 200) - elif operation == 'color_inversion': - processed_img = cv2.bitwise_not(img) - - # Save processed image to a temporary path - output_path = os.path.join(tempfile.gettempdir(), f'processed_image.png') - cv2.imwrite(output_path, processed_img) - - return output_path - -if __name__ == '__main__': - app.run(host='0.0.0.0', port=5000, debug=True) |
