import streamlit as st
from PIL import Image, ImageOps
import numpy as np

def main():
    st.title("이미지 효과 변환기")

    # 파일 업로드
    uploaded_file = st.file_uploader("사진 파일 업로드", type=["jpg", "jpeg", "png"])

    if uploaded_file is not None:
        # 이미지 로드
        image = Image.open(uploaded_file)

        # 선택박스
        operations = ["흑백 전환", "수채화 그림 필터", "좌우 반전", "상하 전환"]
        selected_operation = st.selectbox("작업 선택", operations)

        # 작업 수행
        if selected_operation == "흑백 전환":
            result_image = image.convert("L")
        elif selected_operation == "수채화 그림 필터":
            result_image = apply_watercolor_filter(image)
        elif selected_operation == "좌우 반전":
            result_image = image.transpose(Image.FLIP_LEFT_RIGHT)
        elif selected_operation == "상하 전환":
            result_image = image.transpose(Image.FLIP_TOP_BOTTOM)
        else:
            result_image = image

        # 이미지 배열 변환
        image_array = np.array(image)
        result_array = np.array(result_image)

        # 원본 이미지 표시
        st.subheader("원본 이미지")
        st.image(image, caption="원본 이미지", use_column_width=True)

        # 결과 이미지 표시
        st.subheader("결과 이미지")
        st.image(result_image, caption="결과 이미지", use_column_width=True)

        # 이미지 배열 표시 (디버깅용)
        st.subheader("이미지 배열 (원본)")
        st.write(image_array)

        st.subheader("이미지 배열 (결과)")
        st.write(result_array)

def apply_watercolor_filter(image):
    # 수채화 그림 필터 적용 함수 (간단한 예시)
    # 필터 적용을 위해 Pillow의 필터 기능 활용 가능
    # 해당 예시는 RGB 이미지를 RGBA 이미지로 변환한 뒤 투명도를 조정하여 필터 효과 적용
    watercolor_image = image.convert("RGBA")
    watercolor_image.putalpha(128)  # 투명도 조절
    return watercolor_image

if __name__ == '__main__':
    main()