び1

import os
from flask import Flask, request, render_template, send_from_directory
from flask_uploads import UploadSet, configure_uploads, IMAGES
from PIL import Image, ImageEnhance
import boto3
import numpy as np
from io import BytesIO

app = Flask(__name__)

# 画像のアップロードセットの設定
photos = UploadSet('photos', IMAGES)
app.config['UPLOADED_PHOTOS_DEST'] = 'uploads'
configure_uploads(app, photos)

# S3クライアントの設定
s3 = boto3.client('s3')
bucket_name = 'your-bucket-name'  # ここにあなたのS3バケット名を設定してください

@app.route('/', methods=['GET', 'POST'])
def upload_file():
   if request.method == 'POST' and 'photo' in request.files:
       filename = photos.save(request.files['photo'])
       return render_template('index.html', filename=filename)
   return render_template('index.html')

@app.route('/uploads/<filename>')
def send_file(filename):
   return send_from_directory(app.config['UPLOADED_PHOTOS_DEST'], filename)

@app.route('/process', methods=['POST'])
def process_image():
   mode = request.form.get('mode')
   r = int(request.form.get('r', 255))
   g = int(request.form.get('g', 255))
   b = int(request.form.get('b', 255))
   filename = request.form.get('filename')
   
   image_path = os.path.join(app.config['UPLOADED_PHOTOS_DEST'], filename)
   image = Image.open(image_path)
   
   if mode == 'Grayscale':
       image = image.convert('L')
   else:
       rgb_image = np.array(image)
       rgb_image = rgb_image * [r/255.0, g/255.0, b/255.0]
       image = Image.fromarray(np.uint8(rgb_image))
   
   processed_image_path = os.path.join(app.config['UPLOADED_PHOTOS_DEST'], 'processed_' + filename)
   image.save(processed_image_path)
   
   return send_from_directory(app.config['UPLOADED_PHOTOS_DEST'], 'processed_' + filename)

@app.route('/save', methods=['POST'])
def save_image():
   filename = request.form.get('filename')
   image_path = os.path.join(app.config['UPLOADED_PHOTOS_DEST'], filename)
   
   with open(image_path, 'rb') as f:
       s3.upload_fileobj(f, bucket_name, 'saved_' + filename)
   
   return "Image saved to S3."

if __name__ == '__main__':
   app.run(debug=True)

この記事が気に入ったらサポートをしてみませんか?