Yastık, Python'un Temel Görüntüleme Kütüphanesidir
Yastık, Python Imaging Library'nin (PIL) modern, aktif olarak bakım yapılan çatalıdır. Birincil işlevler, doğrudan Python komut dosyalarında sağlam, verimli görüntü işleme yeteneğinin sağlanması. Harici parçalara ihtiyaç duymadan düzinelerce görüntü fveyamatını açabilir, etkileyebilir, filtreleyebilir, geliştirebilir ve kaydedebilirsiniz. Örneğin, 100 JPEG düzenlemek PNG'ye dönüştürmek ve bunları P'ye yeniden boyutlveırmak 2 saniyeden az sürer optimize edilmiş Yastık işlemleriyle.
Toplu işlemleri gerçekleştirmeniz, filigran kaydetmeniz, meta veri çıkarmanız veya programlı olarak küçük resimler oluşturmanız gerekir, Yastık doğrudan cevaptır. Python tabanlı görüntü işleme otomasyon görevlerinin p'inden fazlası, temel kitaplığı olarak Pillow'u kullanıyveyauz PyPI indirme istatistiklerine göre.
Yastık'u etkili bir şekilde kullanmak için temel iş verilerini anlamalısınız: aç → işlem → kaydet. Burada gerçek kod örnekleriyle pratik bir uygulama bulunmaktadır.
çalıştır pipet yükleme . Şununla doğrulayın: python -c "PIL'e aktarılan Resimden; yazdır(Resim.__versiyon__)" . Tipik kurulum 30 saniyeden az sürer standart bir geniş bant bağlantısında.
img = Image.open("input.jpg").convert("RGB") – ödemeler için gereklidir. img.thumbnail((800, 800)) – Oranı korur, bozulmaz. os.listdir("klasör") Dosyanın içindekiler için: img.save("output.png", optimize=Doğru, kalite=85) – dosya gecikmesi @'a kadar azalır gözle görülür kalite kaybı olmadan. Aşağıdaki komut dosyası, meta verilerini korurken 256x256 piksellik küçük resimler oluşturan bir dizideki tüm JPEG'leri işler. Sıralı optimize edilmemiş döngülere kıyasla toplam işlem süresi ve azalma Yerinde operasyonları kullanarak.
PIL içe aktarma görüntüsündenişletim sistemini içe aktaros.listdir("orijinaller") içindeki dosya adı için: dosyaadı.endswith(".jpg") ise: img = Image.open(os.path.join("orijinaller", dosya adı)) img.thumbnail((256, 256)) img.save(f"thumbnails/{filename}", "JPEG", quality=85) print(f"Thumbnail created: {filename}") Yastık, 8 ana kategoride 50'den fazla özellik seçeneği sunar. Aşağıda, elektriksel, tipik kullanım örnekleri ve gerçek dünya performans ölçümlerini gösteren bir tablo bulunmaktadır.
| Seçim Kategorisi | Temel Yöntemler | Tipik kullanım | Ortalama Zaman (ms) |
|---|---|---|---|
| Biçimlendirme | .save(, biçim=) | PNG ↔ JPEG ↔ BMP | 12–35 |
| Geometrik dönüşümler | .resize(), .rotate(), .crop() | Küçük resimler, hizalama | 8-45 |
| Renk işlemleri | .convert(), .point() | Gri tonlamalı, gelişmiş | 3–10 |
| Filtreleme ve geliştirme | ImageFilter, ImageEnhance | Bulanıklaştırma, keskinleştirme, kontrast | 15–60 |
| Açıklama ve metin | ImageDraw.Draw() | Filigranlar, ek açıklamalar | 20–80 |
Yastık, yerel Python çözümlerine kıyasla görüntü işleme kod uzunluğunun ortalamaları azalır ( örneğin, manuel piksel yinelemesi). Örneğin, yerel Python ile Gauss kapsamının gösterilmesi, ~15 satır iç içe geçmiş döngü gerektirir; Yastık ile, bu img.filter(ImageFilter.GaussianBlur(yarıçap=2)) – bir satır.
Topluluk forumlarına ve GitHub sorunlarına dayanarak, doğrudan ve eyleme dönüştürülebilir yanıtlarla birlikte Pillow hakkında en sık sunulan 6 soru bunlardır.
Evet. kullanım Image.open("animasyonlu.gif") ve çerçeveler arasında yineleme yapın ara() . Yastık, animasyonlu GIF'leri saklanabilir ve zamanlama bölümleri 1 ms'ye kadar hassasiyetle sağlanır. Örnek: 20 karelik bir GIF için tüm kareleri 0,5 saniyeden kısa bir süreyi ayırmak için tüm kareleri çıkarın.
Kullanım Image.open().convert() ve parçalar halinde işleyin .crop() . 100 MP'lik bir görüntü için Pillow'un yavaş yüklemesi başlangıçta yalnızca 5-10 MB kullanır dosyanın tamamını yüklemek yerine. Ek olarak belirtildi Resim.LANCZOS Bellek aralığı verimli olan yüksek kaliteli alternatifleme için.
Pillow yerel olarak JPEG, PNG, TIFF, BMP, GIF, WebP ve ICO dahil 30'dan fazla formatı barındırıyor. Pillow'daki WebP desteği, aynı kalitede JPEG'e göre %-35 daha iyi sıkıştırma sağlar (Google'ın WebP dayanmaktadır). Desteklenen tüm biçimleri kontrol etmek için: PIL'in dağıtılması; feature.get_supported() .
Temel G/Ç ve basit dönüşümler (yeniden boyutlandırma, değişiklik yapma, format dönüştürme) için, Yastık, aynı donanımda OpenCV'den -30 daha hızlıdır çünkü yükü daha azdır. Karmaşık bilgisayarlı görme (özellik algılama, eşleştirme) için OpenCV üstündür. Toplu görüntü otomasyonu için her zaman Yastık'ı seçin.
Kullanım Image.alpha_composite() or .paste() şeffaf bir kaplama ile. 1000 görüntüden oluşan bir grup (her biri 2MB) ~45 saniye içinde filigranlanabilir basit bir for-döngüsü ve Pillow'un çizim yöntemlerini kullanarak. Yapı için "Nasıl Kullanılır" bölümünün altında kod ayrı ayrı bakın.
Evet. Pillow ve NumPy dizileri arasında dönüştürme: np.array(img) and Resim.fromarray(arr) . Bu entegrasyon, veri bilimi görüntü ardışık düzenlerinin "inde" kullanılıyor (Kaggle anketleri, 2024). Pillow'un I/O hızının NumPy'nin işlemleriyle kusursuz performansa olanak tanır.
Yastık'ın ömrünü en üst düzeye çıkarmak için aşağıdaki kanıta dayalı talimatları izleyin:
Özetle, Yastık Python görüntü işleme için kesin çözümdür Gerçek zamanlı video veya 3D dönüştürme gerektirmeyen işlemler için. Hız (temel işlemler için 12MP görüntü başına ~0,2 saniye), format desteği (30 tür) ve temiz API izleme, onu otomasyon komut dosyaları, web arka uçlar ve veri oluşturma hatları için standart endüstri haline getirir.