Ahmetr's picture
Update app.py
802892e verified
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"
)