자몽이 조아

[diykitten] 사용하고 있는 파이썬 라이브러리 정리 본문

개인프로젝트

[diykitten] 사용하고 있는 파이썬 라이브러리 정리

Grapefruitgreentealoe 2025. 2. 10. 14:56
반응형

Python을 사용하여 다양한 기능을 개발하면서 여러 개의 모듈을 추가하게 되었다. 이미지 처리, PDF 생성, S3 파일 관리, 웹 API 개발 등 여러 요소를 다루면서, 각 모듈이 프로젝트에서 어떤 역할을 하는지 정리하고, 왜 추가하게 되었는지 설명하고자 한다.


1. Flask - 웹 API 개발

✨ 추가 이유

웹 API를 통해 클라이언트와 서버 간 데이터를 주고받기 위해 Flask를 사용했다. Flask는 가볍고, 빠르게 REST API를 만들 수 있는 프레임워크로, 프로젝트의 핵심 백엔드 역할을 한다.

🔍 사용 예시

@app.route('/generate-png/<file_id>', methods=['GET'])
def generate_png_api(file_id):
    return send_file(png_path, as_attachment=True, download_name="output.png")

📦 설치

pip install flask flask-cors

2. Pillow (PIL) - 이미지 처리

✨ 추가 이유

PNG 파일에 워터마크 추가, 회전, 크롭, 투명도 조정 등의 작업을 위해 Pillow를 사용했다. ImageDraw, ImageFont, ImageOps 등을 활용하여 텍스트를 이미지 위에 삽입할 수 있다.

🔍 사용 예시

img = Image.open(png_path).convert("RGBA")
draw = ImageDraw.Draw(img)
draw.text((50, 50), "Watermark", font=font, fill=(150, 150, 150, 100))

📦 설치

pip install pillow

3. Matplotlib - 데이터 시각화 및 이미지 생성

✨ 추가 이유

CSV 데이터를 PNG 이미지로 변환하는 과정에서 matplotlib의 imshow()를 사용하여 픽셀 아트 디자인을 생성했다.

🔍 사용 예시

plt.imshow(color_matrix, aspect="auto")
plt.savefig("output.png", format="png")

📦 설치

pip install matplotlib

4. NumPy - 고속 배열 연산

✨ 추가 이유

HEX 색상 데이터를 RGB 배열로 변환할 때, numpy를 활용하여 효율적인 연산을 수행했다.

🔍 사용 예시

np.array([[hex_to_rgb(str(color)) for color in row] for row in data.values])

📦 설치

pip install numpy

5. PyMuPDF (fitz) - PDF 생성 및 워터마크 추가

✨ 추가 이유

PNG를 PDF로 변환하고, PDF에 워터마크를 추가하기 위해 PyMuPDF를 사용했다. 기존 reportlab 대신 더 빠르고 가벼운 PDF 처리 기능을 제공하는 PyMuPDF를 선택했다.

🔍 사용 예시

doc = fitz.open(pdf_path)
page = doc[0]
page.insert_text((100, 100), "Watermark", fontsize=30, rotate=30)

📦 설치

pip install pymupdf

6. Boto3 - AWS S3 파일 업로드 및 다운로드

✨ 추가 이유

CSV 파일을 S3에서 불러와 PNG 및 PDF로 변환한 후, 다시 S3에 저장해야 했기 때문에 boto3를 사용했다.

🔍 사용 예시

s3.download_file(bucket_name, f"csv/{file_id}.csv", temp_file_path)
s3.upload_file(output_file, bucket_name, f"pdf/{file_id}.pdf")

📦 설치

pip install boto3

7. Flask-CORS - Cross-Origin 요청 허용

✨ 추가 이유

클라이언트(React 등)에서 Flask API에 요청할 때, CORS 오류(보안 정책 문제)를 해결하기 위해 추가했다.

🔍 사용 예시

CORS(app)

📦 설치

pip install flask-cors

 

 

반응형
Comments