Ahmetr's picture
Upload 2 files
7adb1b7 verified
Raw
History Blame
3.07 kB
import streamlit as st
from PIL import Image, ImageEnhance, ImageFilter, ImageOps
import io
st.title("Gelişmiş Görüntü İşleme Uygulaması")
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"
)