Arka Plan Kaldırma

Bu Python scripti, bir klasördeki resimlerin arka planlarını kaldırarak yeni bir klasöre kaydeder. Resimler PNG formatında kaydedilir ve boyutları orijinal boyutlarına göre optimize edilir.

📜 Kod:

import os
from rembg import remove, new_session
from PIL import Image
import io
import traceback
import time

# Başlangıç zamanı
start_time = time.time()

# Klasörler
input_folder = 'images'
output_folder = 'images/image'
log_file = 'log.txt'

# Çıktı klasörü yoksa oluştur
os.makedirs(output_folder, exist_ok=True)

# Log dosyasını başlat
with open(log_file, 'w') as log:
    log.write('Arka Plan Kaldırma İşlem Raporu\n')
    log.write('=============================\n')

# u2netp oturumu başlat (hafif model)
session = new_session(model_name='u2netp')

# Toplam resim sayısı
image_files = [f for f in os.listdir(input_folder) if f.lower().endswith(('.jpg', '.jpeg', '.png'))]
total_files = len(image_files)
processed_files = 0

# Resimler üzerinde dön
for filename in image_files:
    processed_files += 1
    print(f'İşleniyor: {filename} ({processed_files}/{total_files})')

    input_path = os.path.join(input_folder, filename)
    output_path = os.path.join(output_folder, os.path.splitext(filename)[0] + '.png')

    try:
        # Giriş verisini oku
        with open(input_path, 'rb') as f:
            input_data = f.read()

        # Orijinal boyutu oku
        input_image = Image.open(io.BytesIO(input_data))
        original_size = input_image.size
        print(f"Giriş Görsel Boyutu: {original_size}")

        # Arka planı kaldır
        output_data = remove(input_data, session=session)

        # PNG olarak yeniden oku
        output_image = Image.open(io.BytesIO(output_data)).convert("RGBA")

        # Eğer boyut değişmişse, orijinal boyuta getir
        if output_image.size != original_size:
            print(f"Çıktı görsel boyutu farklı: {output_image.size}, yeniden ölçekleniyor...")
            output_image = output_image.resize(original_size, Image.LANCZOS)

        # Şeffaf pikselleri iyileştir
        new_data = [
            (r, g, b, a if a > 0 else 0)
            for r, g, b, a in output_image.getdata()
        ]
        output_image.putdata(new_data)

        # Kaydet ve optimize et
        output_image.save(output_path, 'PNG', optimize=True, compress_level=9)

        # Dosya boyutunu yazdır
        output_size = os.path.getsize(output_path) / (1024 * 1024)
        print(f"Çıktı Boyutu: {output_size:.2f} MB")

        # Loga başarı yaz
        with open(log_file, 'a') as log:
            log.write(f'{filename} başarıyla işlendi: {output_path} ({output_size:.2f} MB)\n')

    except Exception as e:
        error_msg = f"Hata: {filename} - {str(e)}\n{traceback.format_exc()}"
        print(error_msg)
        with open(log_file, 'a') as log:
            log.write(f'{error_msg}\n')

# Süreyi hesapla
end_time = time.time()
print(f"Toplam süre: {end_time - start_time:.2f} saniye")
input("Çıkmak için Enter'a basın...")

📋 Kullanım Talimatları:

  1. Gerekli Kütüphaneler: Aşağıdaki komutlarla gerekli kütüphaneleri yükleyin: pip install rembg pillow pip install onnxruntime
  2. Dosya Yapısını Hazırlama:
    • images adında bir klasör oluşturun.
    • Klasöre işlemek istediğiniz görselleri yükleyin.
    • Çıktıların images/image klasörüne kaydedilecektir.
  3. Scripti Çalıştırma:
    • Terminal veya komut istemcisinde scripti çalıştırın:
    python remove_background.py
    • Çalıştırdığınızda, resimlerin arka planları kaldırılacak ve yeni dosyalar images/image klasöründe PNG formatında kaydedilecektir.
    • Her işlemle ilgili detaylı bir log dosyası log.txt dosyasına kaydedilecektir.
  4. Log Dosyası:
    • log.txt dosyasına, her resmin başarıyla işlenip işlenmediği, işlem sırası ve dosya boyutları hakkında bilgiler yazılacaktır.

🖼️ Örnek Çıktı:

İşleniyor: image1.jpg (1/5)
Giriş Görsel Boyutu: (800, 600)
Çıktı Boyutu: 1.21 MB
image1.jpg başarıyla işlendi: images/image/image1.png (1.21 MB)

İşleniyor: image2.png (2/5)
Giriş Görsel Boyutu: (1024, 768)
Çıktı Boyutu: 1.10 MB
image2.png başarıyla işlendi: images/image/image2.png (1.10 MB)

Toplam süre: 35.24 saniye

💾 Ekstra Bilgiler:

  • Resim Boyutu: Arka plan kaldırma işlemi sonrasında resmin boyutları optimize edilmiştir ve PNG formatında kaydedilir.
  • Şeffaflık Düzeltme: Şeffaf piksellerin doğru şekilde işlenebilmesi için özel bir işlem yapılır.

13:10 tarihinde, Programlama kategorisinde yayınlanmış, RSS 2.0 ile takip edebilir, yorum bırakabilir.

Güncellenme Tarihi: 20 Nisan 2025 - 13:10

Görüşlerinizi Paylaşın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir