import streamlit as st from PIL import Image, ImageEnhance, ImageFilter, ImageOps import io st.title("Gerçek Zamanlı Fotoğraf Efektleri Uygulaması - Ahmet Karakoç") st.write("Yüklediğiniz görsel üzerinde efektleri gerçek zamanlı olarak deneyimleyin!") # Kullanıcıdan fotoğraf yüklemesini iste uploaded_file = st.file_uploader("Bir fotoğraf yükleyin", type=["jpg", "jpeg", "png"]) if uploaded_file: # Yüklenen görüntüyü aç image = Image.open(uploaded_file) # Efekt uygulanmış görüntü için kopyasını oluştur edited_image = image.copy() # Orijinal ve efektli görüntüleri yan yana göstermek için sütunlar oluştur col1, col2 = st.columns(2) with col1: st.header("Orijinal Görüntü") st.image(image, use_column_width=True) # Efekt ayarları fotoğrafların altında olacak şekilde düzenlenir st.write("### Efekt Seçenekleri") grayscale = st.checkbox("Gri Ton") blur_intensity = st.slider("Bulanıklık Yoğunluğu", 0, 10, 0) sharpen_intensity = st.slider("Keskinleştirme Yoğunluğu", 0, 10, 0) brightness_intensity = st.slider("Parlaklık", 0.5, 3.0, 1.0) contrast_intensity = st.slider("Kontrast", 0.5, 3.0, 1.0) sepia = st.checkbox("Sepya Efekti") edge_detection = st.checkbox("Kenar Algılama") mirror = st.checkbox("Ayna Yansıması") rotation_angle = st.slider("Döndürme Açısı", 0, 360, 0) # Seçimlere göre efektleri uygula if grayscale: edited_image = edited_image.convert("L").convert("RGB") if blur_intensity > 0: edited_image = edited_image.filter(ImageFilter.GaussianBlur(blur_intensity)) if sharpen_intensity > 0: for _ in range(sharpen_intensity): edited_image = edited_image.filter(ImageFilter.SHARPEN) if brightness_intensity != 1.0: enhancer = ImageEnhance.Brightness(edited_image) edited_image = enhancer.enhance(brightness_intensity) if contrast_intensity != 1.0: enhancer = ImageEnhance.Contrast(edited_image) edited_image = enhancer.enhance(contrast_intensity) if sepia: sepia_image = ImageOps.colorize(edited_image.convert("L"), black="black", white="brown") edited_image = sepia_image if edge_detection: edited_image = edited_image.filter(ImageFilter.FIND_EDGES) if mirror: edited_image = ImageOps.mirror(edited_image) if rotation_angle != 0: edited_image = edited_image.rotate(rotation_angle, expand=True) # Efekt uygulanmış fotoğrafı sağ sütunda göster with col2: st.header("Efektli Görüntü") st.image(edited_image, use_column_width=True) # Görüntüyü indirme butonu buf = io.BytesIO() edited_image.save(buf, format="PNG") byte_im = buf.getvalue() st.download_button( label="Efektli Görüntüyü İndir", data=byte_im, file_name="efektli_goruntu.png", mime="image/png" )