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