본문 바로가기
공부기록/파이썬

[Flask] 이미지 반환하는 라우터(url 호출시 이미지 반환하는 방법)

by 책읽는 개발자 ami 2023. 7. 13.
728x90
반응형

Flask에서 이미지 반환하는 라우터 작성 방법

 
아래 이미지는 포스트맨을 캡쳐한 사진이다.
http://127.0.0.1:5000/api/image/sample이라는 주소를 전송하면 sample이미지가 보여진다.
위 예시와 같이 Flask에서 특정 url을 호출했을 때 이미지를 반환하는 방법에 대해 설명해보겠습니다.


코드는 아주 간단합니다.
 

from flask import Flask, jsonify, request
from flask import Blueprint
from flask import send_file

class ImageRouters:
    @staticmethod
    def get_blueprint(mongodb):
        api_blueprint = Blueprint('api', __name__)
        
        @api_blueprint.route('/image/<image_filename>', methods=['GET'])
        def get_image(image_filename):
            image_path = 'C:/images/' + image_filename + '.jpg'
            return send_file(image_path, mimetype='image/jpeg')
        return api_blueprint

코드 설명:

이미지 파일을 서버에서 클라이언트에게 전송하는 기능을 구현한 코드 부분입니다.

ImageRouters 클래스는 정적 메서드 get_blueprint(mongodb)를 가지고 있습니다. 이 메서드는 Flask의 Blueprint 객체를 생성하고 반환합니다. (Blueprint는 라우팅을 그룹화하고 구조화하는 데 사용.)

api_blueprint.route('/image/<image_filename>', methods=['GET'])는 /image/<image_filename> URL 패턴에 대한 HTTP GET 요청을 정의합니다. 이 때, <image_filename>는 동적 부분이고, 여기에 입력되는 값에 따라 선택되는 이미지가 달라집니다.

 send_file 함수는 Flask에서 제공하는 함수로, 서버의 파일을 클라이언트에게 전송하는 기능을 합니다. 여기에서는 image_path 경로의 이미지 파일을 'image/jpeg'이라는 MIME 타입으로 클라이언트에게 전송하도록 구현되어 있습니다.


Blueprint에 좀 더 알고 싶은 분들은 아래 글을 참조해주세요!
2023.07.03 - [공부기록/파이썬] - [Flask] Blueprint로 라우터 관리하기

728x90
반응형