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()