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의 강력한 기능을 활용하여 사용자에게 풍부한 경험을 제공하세요!