[파이썬] Flask에서의 이미지 처리

Flask는 파이썬 웹 프레임워크로, 이미지 처리와 관련된 다양한 기능을 제공합니다. 이미지 처리는 웹 애플리케이션에서 자주 사용되며, 사용자에게 동적이고 흥미로운 경험을 제공하는 데 필수적입니다. 이 글에서는 Flask를 사용하여 이미지를 업로드, 변환 및 표시하는 방법을 알아보겠습니다.

이미지 업로드

Flask를 사용하여 이미지를 업로드하는 것은 간단합니다. 우선 Flask에서 제공하는 FileStorage 클래스를 사용하여 이미지 파일을 업로드합니다.

from flask import Flask, request
from werkzeug.utils import secure_filename

app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload():
    file = request.files['image']
    filename = secure_filename(file.filename)
    file.save('uploads/' + filename)
    return 'File uploaded successfully!'

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

위의 코드에서 /upload 경로로 POST 요청을 보내면, 이미지 파일이 uploads 디렉토리에 저장됩니다. secure_filename 함수를 사용하여 파일 이름을 안전하게 처리하여 보안 취약점을 방지합니다.

이미지 변환

Flask를 사용하여 이미지를 변환하는 것도 쉽습니다. 이미지를 업로드한 후 변환 작업을 수행하여 원하는 형식이나 크기로 이미지를 조정할 수 있습니다. 이를 위해 Pillow 라이브러리를 사용할 수 있습니다.

from flask import Flask, jsonify, request
from PIL import Image

app = Flask(__name__)

@app.route('/resize', methods=['POST'])
def resize():
    file = request.files['image']
    image = Image.open(file)
    resized_image = image.resize((300, 300)) # 이미지 크기 조정
    resized_image.save('uploads/resized_image.jpg')
    return 'Image resized successfully!'

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

위의 코드는 /resize 경로로 POST 요청을 보내면 이미지를 재조정하여 uploads 디렉토리에 저장합니다. resize 메소드를 사용하여 이미지 크기를 조정하고 저장하는 방법을 볼 수 있습니다.

이미지 표시

Flask는 이미지를 효과적으로 표시할 수 있는 다양한 방법을 제공합니다. 가장 일반적인 방법은 HTML 템플릿을 사용하여 이미지를 표시하는 것입니다.

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html')

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

위의 코드에서 / 경로로 접속하면 index.html 템플릿 파일을 렌더링하게 됩니다. 템플릿 파일에서는 이미지를 <img> 태그를 사용하여 표시할 수 있습니다.


<!-- index.html -->
<html>
<head>
    <title>Flask Image Processing</title>
</head>
<body>
    <img src="{{ url_for('static', filename='uploads/resized_image.jpg') }}" alt="Resized Image">
</body>
</html>

위의 코드에서 src 속성에 url_for 함수를 사용하여 이미지 파일의 경로를 설정합니다. 이미지 파일은 static/uploads 디렉토리에 저장되어 있으며, 해당 경로를 템플릿에서 사용할 수 있습니다.

Flask에서의 이미지 처리는 이처럼 간단하게 수행할 수 있습니다. 이미지 업로드, 변환 및 표시를 통해 다양한 이미지 처리 작업을 웹 애플리케이션에 적용할 수 있습니다. Flask의 강력한 기능을 활용하여 사용자에게 풍부한 경험을 제공하세요!