🖼️ image - Görüntü İşleme
Görüntü yükleme, kaydetme, dönüştürme ve filtreleme işlemleri
📦 77 Fonksiyon
📝 1770 Satır
💾 61.7 KB
📋 Genel Bakış
image modülü, görüntü dosyalarını yükleme, kaydetme, boyutlandırma, filtreleme ve dönüştürme için kapsamlı araçlar sağlar. PNG, JPEG, GIF, BMP ve WebP formatlarını destekler.
📂 Görüntü Yükleme ve Kaydetme
- image.yükle() - Görüntü dosyası yükleme
- image.png_kaydet() - PNG olarak kaydetme
- image.jpeg_kaydet() - JPEG olarak kaydetme
- image.webp_kaydet() - WebP olarak kaydetme
- image.yeni() - Boş görüntü oluşturma
🔧 Temel Dönüşümler
- image.yeniden_boyutlandır() - Boyut değiştirme
- image.kırp() - Görüntü kırpma
- image.döndür() - Döndürme (90°, 180°, 270°)
- image.çevir() - Yatay/dikey çevirme
- image.küçük_resim() - Thumbnail oluşturma
🎨 Renk İşlemleri
- image.parlaklık() - Parlaklık ayarlama
- image.kontrast() - Kontrast ayarlama
- image.doygunluk() - Renk doygunluğu
- image.gri_tonlama() - Grayscale dönüşümü
- image.ters_çevir() - Renk inversiyonu
- image.sepia() - Sepia efekti
🔍 Filtreler ve Efektler
- image.bulanıklaştır() - Blur efekti
- image.keskinleştir() - Sharpen filtresi
- image.kenar_algıla() - Edge detection
- image.gürültü_ekle() - Noise ekleme
- image.gürültü_azalt() - Denoising
- image.mozaik() - Pixelate efekti
🖌️ Çizim ve Metin
- image.piksel_ayarla() - Piksel rengi ayarlama
- image.piksel_al() - Piksel rengi okuma
- image.dikdörtgen_çiz() - Dikdörtgen çizme
- image.metin_yaz() - Metin ekleme
📊 Görüntü Bilgisi
- image.genişlik() - Genişlik bilgisi
- image.yükseklik() - Yükseklik bilgisi
- image.format() - Dosya formatı
- image.histpgram() - Renk histogramı
💡 Kullanım Örnekleri
Görüntü Boyutlandırma ve Thumbnail
kullan image
kullan fs
// Görüntü yükleme
değer resim = image.yükle("fotoğraf.jpg")
yazdır(f"Orijinal boyut: {resim.genişlik()}x{resim.yükseklik()}")
// Yüksek kaliteli yeniden boyutlandırma
değer orta_boy = resim.yeniden_boyutlandır(
genişlik: 1024,
yükseklik: 768,
kalite: image.Kalite.YÜKSEK
)
orta_boy.jpeg_kaydet("fotoğraf_orta.jpg", kalite: 90)
yazdır("✓ Orta boy kaydedildi")
// Thumbnail oluştur (oran korunur)
değer thumbnail = resim.küçük_resim(200, 200)
thumbnail.png_kaydet("fotoğraf_thumb.png")
yazdır("✓ Thumbnail oluşturuldu")
// Kare kırpma (profil fotoğrafı için)
değer merkez_x = resim.genişlik() / 2
değer merkez_y = resim.yükseklik() / 2
değer kare_boyut = 500
değer profil = resim.kırp(
x: merkez_x - kare_boyut / 2,
y: merkez_y - kare_boyut / 2,
genişlik: kare_boyut,
yükseklik: kare_boyut
)
profil.png_kaydet("profil.png")
yazdır("✓ Profil fotoğrafı oluşturuldu")
Görüntü Filtreleme ve Efektler
kullan image
değer resim = image.yükle("manzara.jpg")
// Gri tonlama
değer gri = resim.gri_tonlama()
gri.jpeg_kaydet("manzara_gri.jpg")
yazdır("✓ Gri tonlama uygulandı")
// Sepia efekti (nostaljik görünüm)
değer sepia = resim.sepia()
sepia.jpeg_kaydet("manzara_sepia.jpg")
yazdır("✓ Sepia efekti uygulandı")
// Parlaklık ve kontrast ayarlama
değer parlak = resim
.parlaklık(1.2) // %20 daha parlak
.kontrast(1.3) // %30 daha fazla kontrast
.doygunluk(1.1) // %10 daha doygun renkler
parlak.jpeg_kaydet("manzara_parlak.jpg")
yazdır("✓ Renk ayarlaması yapıldı")
// Bulanıklaştırma
değer bulanık = resim.bulanıklaştır(yarıçap: 5.0)
bulanık.jpeg_kaydet("manzara_bulanık.jpg")
yazdır("✓ Blur efekti uygulandı")
// Keskinleştirme
değer keskin = resim.keskinleştir(miktar: 1.5)
keskin.jpeg_kaydet("manzara_keskin.jpg")
yazdır("✓ Keskinleştirme uygulandı")
// Kenar algılama (edge detection)
değer kenarlar = resim.kenar_algıla(eşik: 100)
kenarlar.png_kaydet("manzara_kenarlar.png")
yazdır("✓ Kenar algılama yapıldı")
// Mozaik efekti
değer mozaik = resim.mozaik(piksel_boyutu: 10)
mozaik.jpeg_kaydet("manzara_mozaik.jpg")
yazdır("✓ Mozaik efekti uygulandı")
Toplu Görüntü İşleme
kullan image
kullan fs
sınıf Görüntüİşlemci {
fonksiyon toplu_yeniden_boyutlandır(
kaynak_klasör: Dize,
hedef_klasör: Dize,
max_genişlik: Tam,
max_yükseklik: Tam
) -> Sonuç<Tam, Hata> {
// Hedef klasörü oluştur
fs.klasör_oluştur(hedef_klasör)?
// Tüm görüntü dosyalarını bul
değer dosyalar = fs.dosyalar_listele(kaynak_klasör)?
değer görüntü_uzantıları = [".jpg", ".jpeg", ".png", ".bmp", ".gif"]
değer işlenen = 0
için dosya içinde dosyalar {
değer uzantı = fs.uzantı(dosya).küçük_harfe()
eğer uzantı içinde görüntü_uzantıları {
değer kaynak_yol = fs.birleştir(kaynak_klasör, dosya)
değer hedef_yol = fs.birleştir(hedef_klasör, dosya)
dene {
değer resim = image.yükle(kaynak_yol)
// Boyutu kontrol et
eğer resim.genişlik() > max_genişlik veya resim.yükseklik() > max_yükseklik {
// Orantılı boyutlandırma
değer oran = (max_genişlik.gerçek() / resim.genişlik().gerçek())
.min(max_yükseklik.gerçek() / resim.yükseklik().gerçek())
değer yeni_genişlik = (resim.genişlik().gerçek() * oran).tam()
değer yeni_yükseklik = (resim.yükseklik().gerçek() * oran).tam()
değer yeni_resim = resim.yeniden_boyutlandır(
yeni_genişlik,
yeni_yükseklik,
kalite: image.Kalite.YÜKSEK
)
yeni_resim.jpeg_kaydet(hedef_yol, kalite: 85)
yazdır(f"✓ İşlendi: {dosya} ({resim.genişlik()}x{resim.yükseklik()} -> {yeni_genişlik}x{yeni_yükseklik})")
işlenen += 1
} yoksa {
// Boyut zaten uygun, sadece kopyala
fs.dosya_kopyala(kaynak_yol, hedef_yol)?
yazdır(f"→ Kopyalandı: {dosya}")
işlenen += 1
}
} yakala hata {
yazdır(f"❌ Hata ({dosya}): {hata}")
}
}
}
dön Tamam(işlenen)
}
fonksiyon watermark_ekle(
kaynak: Dize,
hedef: Dize,
watermark_metin: Dize,
konum: Dize = "sağ_alt"
) -> Sonuç<Boş, Hata> {
değer resim = image.yükle(kaynak)?
// Watermark konumunu hesapla
değer (x, y) = eşleştir konum {
"sol_üst" => (10, 10),
"sağ_üst" => (resim.genişlik() - 200, 10),
"sol_alt" => (10, resim.yükseklik() - 40),
"sağ_alt" => (resim.genişlik() - 200, resim.yükseklik() - 40),
_ => (10, resim.yükseklik() - 40)
}
// Yarı şeffaf metin ekle
resim.metin_yaz(
watermark_metin,
x: x,
y: y,
font: "Arial",
boyut: 24,
renk: image.rgba(255, 255, 255, 180), // Beyaz, %70 opaklık
gölge: doğru
)
resim.jpeg_kaydet(hedef, kalite: 90)?
dön Tamam(boş)
}
}
// Kullanım
değer işlemci = Görüntüİşlemci {}
// Toplu yeniden boyutlandırma
yazdır("Görüntüler yeniden boyutlandırılıyor...")
değer sonuç = işlemci.toplu_yeniden_boyutlandır(
"orijinal_resimler",
"küçük_resimler",
1920,
1080
).aç()
yazdır(f"\n✓ Toplam {sonuç} görüntü işlendi")
// Watermark ekle
işlemci.watermark_ekle(
"fotoğraf.jpg",
"fotoğraf_watermark.jpg",
"© 2024 Benim Fotoğraflarım",
konum: "sağ_alt"
).aç()
yazdır("✓ Watermark eklendi")
🎯 İyi Uygulamalar
- Yeniden boyutlandırmada yüksek kalite filtreleri kullanın
- JPEG kayıt için 85-95 arası kalite değeri optimal
- Dosya boyutunu küçültmek için WebP formatını düşünün
- Büyük görüntülerde streaming işleme kullanın
- Thumbnail'ler için aspect ratio'yu koruyun
- Watermark için şeffaf PNG kullanın
- Filtreleri art arda uygulamak yerine kombine edin