File size: 3,014 Bytes
5201491
 
 
 
802892e
5201491
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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"
    )