ImageMagick ile Toplu Görsel İşleme: Temel Komutlar

Yığın fotoğraf kâğıdı, bir kısmı küçültülmüş

ImageMagick, açık kaynaklı bir komut satırı görüntü işleme aracıdır. Yeniden boyutlandırma, format dönüşümü, kalite ayarı ve metadata temizleme gibi işlemleri tek bir komutla veya toplu olarak otomatikleştirmek için kullanılır. Grafik arayüz gerektirmez; terminal yeterlidir. Çoğu Linux dağıtımında paket yöneticisiyle birkaç saniyede kurulur ve hemen kullanılabilir.

İki ana komut vardır: convert ve mogrify. convert, kaynak dosyayı değiştirmeden yeni bir çıktı üretir; mogrify ise dosyaları yerinde günceller ve aynı klasörde geri alınamaz değişiklikler yapabildiğinden çalıştırmadan önce yedek almak önerilir. Toplu işlemlerde mogrify genellikle tercih edilir, ancak öğrenme aşamasında convert ile başlamak hataların maliyetini düşürür.

Komutlar Linux, macOS ve Windows üzerinde çalışır. ImageMagick 7 sürümünde convert komutu magick convert olarak değişti; hangi sürümün kurulu olduğunu convert --version veya magick --version ile doğrulayabilirsiniz.

Kurulum ve doğrulama

Platforma göre kurulum komutları:

  • Linux (Debian/Ubuntu): sudo apt install imagemagick
  • macOS (Homebrew): brew install imagemagick
  • Windows: resmi siteden MSI paketi

Kurulumu doğrulamak için:

convert --version
# veya ImageMagick 7+
magick --version

Temel sözdizimi: convert [kaynak] [parametreler] [hedef]

Windows'ta PowerShell kullanırken joker karakterler (*.jpg) doğrudan kabuk tarafından genişletilmez. Bu durumda ya tırnak içinde yol kalıbı kullanılır ya da bir döngü yazılır; bu fark küçük görünse de toplu işlemlerde karmaşaya yol açar. Ayrıca Windows ortamında uzun yol adları bazen sorun çıkarabilir; çalışma dizinini kısaltmak veya göreceli yollar kullanmak bu durumu önler.

Yeniden boyutlandırma: -resize ve -thumbnail

En-boy oranını koruyarak yeniden boyutlandırma için:

convert kaynak.jpg -resize 800x600 hedef.jpg

Bu komut, görseli 800x600 alanına sığdırır; ancak oranı zorlamaz. Her iki boyutu tam olarak zorlamak için ünlem işareti eklenir:

convert kaynak.jpg -resize 800x600! hedef.jpg

Tek eksene göre boyutlandırma seçenekleri:

  • Yalnızca genişlik: convert kaynak.jpg -resize 800x hedef.jpg
  • Yalnızca yükseklik: convert kaynak.jpg -resize x600 hedef.jpg
  • Yüzde bazlı: convert kaynak.jpg -resize 50% hedef.jpg

-thumbnail parametresi, küçük önizleme görselleri için tasarlanmıştır; önce boyutu düşürür, ardından kırpar ve metadata'yı otomatik temizler. Tam boyut dönüşümleri için -resize daha öngörülebilir davranır ve küçük resim üretimi dışında tercih edilmez.

Yalnızca daha büyük görselleri küçültmek, küçük görselleri büyütmemek için > operatörü kullanılır:

convert kaynak.jpg -resize "1200x>" hedef.jpg

Tersine, yalnızca küçük görselleri büyütmek, büyük görsellere dokunmamak için < operatörü geçerlidir. Bu operatörler özellikle boyut standardizasyonu gerektiren toplu işlemlerde zaman kazandırır; her dosyayı ayrı ayrı kontrol etme ihtiyacını ortadan kaldırır. Boyut tutarsızlığı olan büyük bir görsel arşivini temizlerken bu operatörler olmadan aynı sonucu elde etmek için her görsel için ayrı bir koşul yazılması gerekirdi.

Format dönüşümü: JPEG, PNG, WebP

ImageMagick, çıktı dosyasının uzantısından formatı otomatik okur:

convert kaynak.jpg hedef.webp

PNG'den JPEG'e geçerken şeffaflık katmanı sorun çıkarır. JPEG şeffaflık desteklemediğinden varsayılan olarak siyah arka plan eklenir; bunu önlemek için:

convert kaynak.png -background white -flatten hedef.jpg

Toplu format dönüşümü için mogrify daha pratiktir. Bir klasördeki tüm JPEG dosyalarını WebP'ye çevirmek ve orijinalleri korumak için:

mogrify -format webp -path ./cikti/ *.jpg

-path parametresi belirtilmezse orijinal dosyalar silinmez; aynı ada sahip yeni uzantılı dosyalar oluşturulur. Orijinallerin üzerine yazmamak için -path ile ayrı klasör kullanmak güvenlidir.

Desteklenen formatların tam listesini görmek için:

convert -list format

"no decode delegate" hatası, ilgili format desteğinin derlemeye dahil edilmediğini gösterir. WebP veya HEIC formatlarında bu durumla sıkça karşılaşılır ve çözümü genellikle ImageMagick'i ilgili kütüphanelerle birlikte yeniden derlemek ya da daha güncel bir sürüm kurmaktır. Paket yöneticisinden kurulumda bu kütüphaneler çoğunlukla otomatik olarak eklenir; manuel derleme gerektiren durum daha çok sunucu ortamlarında ortaya çıkar.

Kalite ayarı ve sıkıştırma

JPEG ve WebP için -quality parametresi 1-100 arasında değer alır. PNG için ise 0-9 arasında bir sıkıştırma seviyesi belirler; ancak PNG kayıpsız bir format olduğundan bu değer görsel kaliteyi değil, işlem süresini ve dosya boyutunu etkiler.

convert kaynak.jpg -quality 82 hedef.jpg

JPEG kalite değerleri için pratik referans aralıkları:

  • 85-95: Görsel kayıp neredeyse fark edilmez; dosya boyutu yüksek kalır. Baskı veya yüksek kaliteli arşiv için uygundur.
  • 75-85: Web için standart aralık; kayıp çoğu durumda gözle ayrılmaz ve boyut kazanımı belirgindir.
  • 60-75: Küçük önizlemeler ve büyük görsellerin mobil sürümleri için kabul edilebilir.
  • 60 altı: Belirgin sıkıştırma artefaktları görünür; yalnızca küçük thumbnail'larda kullanışlıdır.

WebP için sözdizimi aynıdır:

convert kaynak.jpg -quality 80 hedef.webp

WebP'de kayıpsız sıkıştırma istenirse:

convert kaynak.png -define webp:lossless=true hedef.webp

JPEG renk alt örnekleme ayarı da kaliteyi etkiler. Varsayılan 4:2:0 alt örnekleme dosya boyutunu küçültür ve fotoğraflar için çoğu durumda yeterlidir. Bununla birlikte, ince metin veya keskin çizgiler içeren görsellerde hafif bulanıklık fark edilebilir; bu durumlarda 4:4:4 daha yüksek renk doğruluğu sunar:

convert kaynak.jpg -sampling-factor 4:4:4 -quality 82 hedef.jpg

Metadata temizleme: -strip

EXIF verisi kamera modeli, çekim ayarları, GPS koordinatları ve ICC renk profili gibi bilgileri saklar. Sıradan bir akıllı telefon fotoğrafında bu veri 10-30 KB arasında yer kaplayabilir; web'e yükleme öncesinde temizlemek hem boyutu küçültür hem de gereksiz bilgi ifşasını önler.

convert kaynak.jpg -strip hedef.jpg

Toplu temizleme için:

mogrify -strip *.jpg

-strip ICC renk profilini de siler. Renk tutarlılığı gerektiren baskı veya tasarım iş akışlarında bu fark önem taşır; web kullanımı için sorun oluşturmaz, çünkü tarayıcılar eksik renk profili durumunda sRGB varsayar. Fotoğraf tabanlı sitelerde görselleri yayınlamadan önce metadata temizleme adımını iş akışına eklemek, ileride içerik yönetim sisteminin ek bir işlem yapmasına da gerek bırakmaz.

Yalnızca EXIF verilerini temizleyip ICC profilini korumak istendiğinde -strip seçicilik sunmaz; hepsini birlikte kaldırır. Seçici temizlik için farklı araçlara geçmek gerekir. Web çıktısında bu kısıtlama pratikte nadiren sorun yaratır.

Birden fazla işlemi birleştirmek

ImageMagick parametreleri zincirleme çalışır. Yeniden boyutlandırma, kalite ayarı ve metadata temizlemeyi tek komutta yapmak mümkündür:

convert kaynak.jpg -resize 1200x -quality 82 -strip hedef.jpg

Parametrelerin sırası önemlidir. -resize, -quality'den önce gelmelidir; ImageMagick işlem hattı soldan sağa akar ve sıra bazı durumlarda çıktıyı etkiler.

mogrify ile tüm parametreler toplu işleme uygulanabilir:

mogrify -resize 1200x -quality 82 -strip -format webp -path ./cikti/ *.jpg

Bash döngüsüyle daha okunabilir çıktı adları üretmek için:

for f in *.jpg; do
  convert "$f" -resize 1200x -quality 82 -strip "${f%.jpg}.webp"
done

Alt klasörleri kapsayan derin işlem için find ile:

find . -name "*.jpg" -exec convert {} \
  -resize 1200x -quality 82 -strip \
  {}.webp \;

Bu komut her kaynak dosyaya .webp uzantısı ekler; kaynak.jpg'dan kaynak.jpg.webp elde edilir. Daha temiz adlar için Bash döngüsü tercih edilir.

Hata ayıklama ve yaygın sorunlar

-verbose bayrağı işlem sırasında her adımı terminale basar:

convert -verbose kaynak.jpg -resize 800x hedef.jpg

Sık karşılaşılan hatalar ve nedenleri:

  • no decode delegate: İlgili format desteği derlemeye dahil edilmemiş. convert -list format ile desteklenen formatlar listelenir.
  • cache resources exhausted: Büyük görsellerle çalışırken bellek sınırına ulaşıldı. -limit memory 512MB bayrağı veya policy.xml ayarı çözüm olabilir.
  • unable to open image: Dosya yolu veya izin sorunu. Çalışma dizini ve dosya adı doğrulanmalıdır.
  • geometry does not contain image: -crop parametresi görsel sınırlarının dışına çıkıyor. Koordinatlar kontrol edilmelidir.

identify komutu, bir görselin boyut, format ve renk derinliği gibi bilgilerini okur:

identify kaynak.jpg

Toplu işlemden önce tek bir dosya üzerinde convert ile denemek, parametrelerin doğru çalıştığını doğrulamanın en hızlı yoludur. Sonuç beklentileri karşıladıktan sonra mogrify ile toplu işleme geçilebilir. Özellikle binlerce dosyayı kapsayan işlemlerde bu alışkanlık, sonradan düzeltmesi zor hataları en baştan engeller.

Yukarıdaki komutlar bir arada kullanıldığında, yüzlerce görseli tek seferde yeniden boyutlandırmak, format dönüştürmek, sıkıştırmak ve temizlemek mümkün olur. ImageMagick'in gücü zincirleme parametreler ve döngülerle ortaya çıkar; basit bir Bash veya PowerShell betiği, elle saatler sürecek işlemi dakikaya indirebilir.

mogrify'ın dosyaları yerinde değiştirdiğini aklınızda tutun. Her yeni parametre kombinasyonunu önce tek bir dosya üzerinde convert ile test etmek, sonra toplu işleme geçmek, geri dönüşü olmayan hataları en baştan önler; bu basit alışkanlık gereksiz yedek almak zorunda kalmaktan da kurtarır.

Daha ileri kullanım için -fx operatörü görsel başına koşullu işlemler yazmaya, -draw ise toplu filigran eklemeye olanak tanır. Temel komutlara hâkim olunduktan sonra bu özellikler, iş akışını daha da özelleştirmek için doğal bir adım olur.