Closed7
画像に枠線をつけてくれるWEBアプリを作る
Flask
ChatGPTと協力して作成
コード群
ディレクトリ構成
.
├── app
│ ├── app.py
│ └── templates
│ └── index.html
├── docker-compose.yaml
├── Dockerfile
└── requirements.txt
app.py
from flask import Flask, render_template, request, send_file
from PIL import Image, ImageOps
import os
app = Flask(__name__)
@app.route('/', methods=['GET'])
def index():
return render_template('index.html')
@app.route('/process_image', methods=['POST'])
def process_image():
image_file = request.files['image']
if image_file:
image = Image.open(image_file.stream)
bordered_image = ImageOps.expand(image, border=1, fill='black')
temp_file = "temp_image.png"
bordered_image.save(temp_file)
response = send_file(temp_file, as_attachment=True, download_name=f"bordered_{image_file.filename}")
os.remove(temp_file)
return response
if __name__ == '__main__':
app.run(debug=True)
<!DOCTYPE html>
<html>
<head>
<title>Wakusen App</title>
</head>
<body>
<h1>Wakusen App</h1>
<form action="/process_image" method="post" enctype="multipart/form-data">
<input type="file" name="image" accept="image/*" required>
<input type="submit" value="Upload and Process Image">
</form>
</body>
</html>
違い
これが
こう
もう少し薄くてもいいな
枠線なし
枠線border=1
コンテナ化
Dockerfile
Dockerfile
FROM python:3.11.4-slim-bookworm
ENV FLASK_APP=app
ENV FLASK_RUN_HOST=0.0.0.0
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install --upgrade pip && \
pip install -r requirements.txt
requirements.txt
requirements.txt
Flask==2.3.2
Pillow==10.0.0
docker-compose.yaml
docker-compose.yaml
version: '3'
services:
web:
build: .
command: flask run
ports:
- "5000:5000"
volumes:
- ./app:/app
動作確認
http://localhost:5000
へアクセス
枠線をつけたいファイルを選択し、「Upload and Process Image」をクリック
このような枠線つき画像がダウンロードできる
枠線がついてるのでヨシ
このスクラップは2023/08/07にクローズされました