Spaces:
Running
Running
| 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" | |
| ) | |