Bloga dön

GIF Animasyonu Nasıl Sıkıştırılır: Boyutunu Küçültmenin 6 Yolu (Görüntü Kalitesine Göre Sıralı)

ImgZilla Blog

5 saniyelik bir işlem gösterimi kaydettim, bunu bir GIF'e aktardım ve boyutuna baktım: 18 MB.
Dokümana yapıştırmak, gruba göndermek veya README'e koymak istiyorsanız, ya yüklenme başarısız olur ya da yüklenirken yarı yarıya dönerek durur.
Bir "animasyon" neden bir videodan daha büyük oluyor? Ve onu nasıl küçültebilir, aynı zamanda ekranı dolduracak gürültülü görüntülerle boğulmadan?


Önce Şunu Anlayın: GIF Neden Böyle Büyüktür

GIF formatı 1987 yılındadır. Birkaç doğal kısıtlaması, onun "şişman" olmasına neden olur:

  • Her kare, tam bir resimdir. Videolardaki gibi "değişimi kaydet" kare arası sıkıştırma yoktur - dışa aktarma sırasında özel olarak optimize edilmediği sürece, 100 kare 100 resim demektir.
  • Sıkıştırma algoritması eski. GIF sadece LZW kayıpsız sıkıştırma kullanır; "ardışık aynı renkleri" ustalaşır ancak gradyanlar, fotoğraflar ve ince dokularla çalışamaz.
  • Her kare için en fazla 256 renk. Yetersiz renk olduğunda, dışa aktarma araçları "dithering" (titreme) kullanır - geçişleri simüle etmek için sıkıntılı noktalar yayar. Bu gürültü gözle pürüzsüzdür ancak LZW için en zor sıkıştırılacak veridir.

Bir GIF'in boyutu kabaca şu faktörlere bağlıdır: Boyut × Kare sayısı × Her karenin ne kadar "parçalı" olması. Aşağıdaki tüm yöntemler bu üç faktör üzerinde çalışır.

Boyutunu Küçültmenin 6 Yolu, Görüntü Kalitesindeki Kayıp Azaldıkça

1. Kare Optimizasyonu: Sadece "Değişen Alanı" Kaydet (Kayıpsız)

Birçok ekran kaydedici ve tasarım yazılımı dışa aktardığında GIF karelerini her zaman tam ekran görüntüler. Ancak bir işlem gösteriminde genellikle sadece fare ve küçük bir alan hareket eder.

Kare optimizasyonu şunları yapar: Her karede sadece önceki kareyle aynı olmayan dikdörtgen alanı korur, değişmeyen kısımlar için transparan pikseller kullanır. Transparan pikseller birbirine bağlanır ve LZW sıkıştırması çok verimli hale gelir.

Pikseller hiçbir şekilde değişmez, animasyon efekti tamamen aynıdır; sadece depolama yöntemi daha zekadır. "Arka plan sabit, sadece bir bölüm hareket ediyor" olan GIF'ler (ekran kaydı, UI gösterimi, meme) için bu adım ciddi tasarruf sağlar.

2. Kayıplı LZW: Sıkıştırma Algoritmasında "Biraz Su Bırakmak" (Görsel Olarak Kayıpsız)

Bu, gifsicle'in --lossy parametresiyle gelen düşünce biçimidir: Kodlama sırasında renklerde çok küçük sapmalar izin verilir, böylece daha fazla piksel "aynı renk" olarak birleştirilir, LZW verimliliği artar.

Özelliği şudur: Renk sayısını azaltmaz, boyutu değiştirmez, kareleri kaydırmaz; karşılığında ekranda hafif bir gürültü belirebilir. Değer ne kadar yüksekse tasarruf o kadar fazla olur, gürültü o kadar belirginleşir. Hafif kullanımda (örneğin --lossy=30~40), normal izleme mesafesinde fark edilemez.

3. Renk Sayısını Azaltma: 256 Renkten 128 veya 64'e

Paletin renk sayısını 256'dan 128'e veya 64'e düşürmek, her pikselin bilmesi gereken bilgiyi azaltır ve sıkıştırma verimliliği artar.

Düz çizgi stilleri, ikon animasyonları, UI ekran kayıtları için renkler zaten azdır, azaltmak neredeyse hiçbir kayıp gerektirir; ancak fotoğraf gibi, çok gradyanlı ekranlar için renk sayısını azaltmak belirgin renk şeritleri ve lekeler yaratabilir.

4. Kare Oranı Azaltma (抽帧)

Birçok GIF 30 fps veya 60 fps ile dışa aktarılır ancak GIF yüksek kare hızlarında zayıftır; birçok senaryoda 10~15 fps yeterlidir.

Kare sayısını yarıya indirmek, boyutun da neredeyse yarıya inmesine neden olur. Zararı hareketin daha pürüzsüz olmamasıdır - işlem gösterimlerinde etkisi azdır ancak akıcılık gerektiren animasyonlarda belirginleşir.

5. Boyutu Küçültme (缩小尺寸)

Boyut ve piksel sayısı neredeyse doğru orantılıdır: Genişlik ve yüksekliği yarı yarıya indirdiğinizde, piksel sayısı dörtte birine düşer.

Retina ekranlarında kaydettiğinizde, orijinal genişlik bazen 2000'den fazla pikseldir ancak genellikle sadece 600~800 piksel genişliğinde görüntülenir. Gerçek görüntülenen boyuta göre dışa aktarım genellikle en yüksek getiri sağlayan adımdır. Zararı, yakınlaştırınca bulanıklaşmasıdır; metin içeriğinde okunabilirliği göz önünde bulundurun.

6. Format Değiştirme: GIF'i Videoya veya WebP'ye Çevirme

Platform izin veriyorsa, en kapsamlı çözüm GIF kullanmamaktır:

  • MP4 / WebM: Modern video kodlaması kare arası sıkıştırma içerir; aynı içerik için boyut genellikle GIF'in birkaç katı kadar azdır. Web sayfalarında <video autoplay loop muted playsinline> kullanarak GIF etkisine benzer bir sonuç elde edebilirsiniz.
  • Dinamik WebP / APNG: Daha fazla renk desteği ve daha iyi sıkıştırma sağlar; modern tarayıcılar tarafından oynatılır.

Zararı uyumluluktur: Birçok sohbet uygulaması, forum, belge aracı ve e-posta istemcisi yalnızca GIF'leri tanır; format değişikliği durumunda görüntülenmeyebilir veya otomatik olarak oynatılmayabilir.


Karşılaştırma Tablosu ile Seçimleri Görmek

Yöntem Görüntü Kalitesi Etkisi Uygun Uygun Değil
Kare Optimizasyonu Yok, pikseller değişmez Tüm GIF'ler, özellikle ekran kayıtları ve yerel animasyonlar -- (her zaman yapılmalıdır)
Kayıplı LZW (Hafif) Çok hafif gürültü Neredeyse tüm GIF'ler Piksel sanatı için çok hassas olanlar
Renk Sayısını Azaltma Gradyanlarda renk şeritleri oluşur Düz çizgi illüstrasyonları, ikonlar, UI Fotoğraflar, çok gradyanlı ekranlar
Kare Oranı Azaltma Hareket daha pürüzsüz olmaz İşlem gösterileri, statik olan animasyonlar Akıcılık gerektiren animasyonlar
Boyutu Küçültme Detaylar azalır Orijinal boyut görüntülenen boyuttan belirgin şekilde büyükse Küçük metinleri okumak gerekirse
Format Değiştirme Genellikle daha iyi Web siteleri, kontrol edebileceğiniz platformlar Yalnızca GIF'leri tanıyan platformlar

Sıralamanın mantığı şudur: Önce kayıp olmayan veya neredeyse kayıp olmayanları yapın, ardından ihtiyacınıza göre ilerleyin. İlk iki adımı tamamladığınızda yeterince küçülürseniz, renk, kare oranı ve boyut gibi şeyleri feda etmenize gerek kalmaz.


İlk İki Adım, ImgZilla Size Toplu Olarak Yapabilir

Elinizde bir sürü GIF varsa - meme koleksiyonunuz, dokümanlardaki gösterim animasyonları, web sitesi materyalleriniz - tek tek online araçlara atıp parametreleri ayarlamak çok yorucudur.

ImgZilla, macOS görüntü sıkıştırma aracıdır ve GIF işlerken yukarıdaki tablonun ilk iki adımını kullanır:

  • gifsicle tabanlı: En yüksek düzey kare optimizasyonunu (maksimum -O3 gibi) önce yapar, ardından hafif kayıplı LZW'yi (maksimum --lossy=40 gibi) ekler.
  • Renk sayısını azaltmaz, kare oranını düşürmez, boyutu değiştirmez, döngü ayarını değiştirmez. Animasyon orijinal animasyon gibi kalır; kare hızı, süre ve çözünürlük değişmez, sadece dosya daha küçüktür.
  • Yerinde sıkıştırma: Dosya adı, yolu ve format değişmez. demo.gif olarak referanslanan dokümanlar, web sayfaları ve Markdown dosyalarında sıkıştırılmış hali de demo.gif kalır, hiçbir bağlantıyı değiştirmenize gerek kalmaz.
  • Tüm bir klasörü sürükleyin: Alt dizinleri özyinelemeli olarak tarar, GIF'leri ve JPG, PNG, WebP gibi diğer görüntüleri birlikte işler.
  • Sıkıştırılamayanları zorla sıkıştırmaz: Zaten optimize edilmiş, sıkıştırma oranı %0.4'ün altında olan dosyalar "maksimuma ulaşmış" olarak işaretlenir ve orijinal haliyle bırakılır, ücretsiz kota da düşülmez.
  • Orijinal dosyalar varsayılan olarak Çöp Kutusu'na taşınır: Hangi dosyanın sonucundan memnun değilseniz, sağ tıklayarak "Geri Yükle" diyerek geri alabilirsiniz.
  • Tüm işlem yerel olarak çalışır, hiçbir sunucuya yüklenmez ve online araçlardaki gibi dosya boyutu veya kopya sayısı sınırlaması yoktur - onlarca MB'lık ekran kaydı GIF'leri bile işlenir.

Ne kadar tasarruf sağladığınıza, GIF'in orijinal olarak nasıl dışa aktarıldığına bağlıdır. Kare optimizasyonu yapılmamış, çoğunlukla sabit olan ekran kaydı GIF'leri genellikle en çok tasarruf sağlar; profesyonel araçlarla sıkıştırılmış GIF'ler için sadece ufak bir miktar bırakılabilir, hatta doğrudan "maksimuma ulaştı" olarak işaretlenebilir - bu normaldir.

ImgZilla Yapmaz

Animasyonun "aynı görünmesi" için ImgZilla, 3. ile 6. adımları sizin için yapmaz. İlk iki adım yeterince küçükse, örneğin belirli bir platformun üst sınırına tam olarak sığması gerekiyorsa, hangi şeyi feda etmeniz gerektiğine kendi kararınız vermeniz gerekir:

bash

gifsicle komut satırı: 128 renge düşür, genişliği 640'e ölçekle, daha güçlü kayıplı sıkıştırma

gifsicle -O3 --lossy=80 --colors 128 --resize-width 640 input.gif -o output.gif

GIF'i MP4'ye dönüştürmek için ffmpeg (genellikle boyut çok daha küçüktür)

ffmpeg -i input.gif -movflags +faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" output.mp4

Kareleri seçme, kesme veya süre ayarlama gibi işlemler ezgif gibi online düzenleyicilerle daha görsel olur.


Daha İyi Bir Alışkanlık: Kaynağında Büyük GIF'leri Dışa Aktarmamak

Son üç öneri, ileride sık sık sıkıştırmak zorunda kalmamanızı sağlar:

  1. Kayıt öncesi pencereyi küçültün, sadece ihtiyacınız olan alanı kaydedin, değilse tüm Retina ekranını değil.
  2. Dışa aktarırken 10~15 fps seçin, çoğu gösterim için yeterlidir.
  3. Dışa aktardıktan sonra hızlıca sıkıştırın, kare optimizasyonu ve hafif kayıplı LZW'yi yapın - bu adım için herhangi bir karar vermenize gerek yoktur, araçlar için uygun bir toplu işlemdir.

GIF bir eski formattır ancak hala "otomatik olarak oynatılabilir" olan en büyük ortak noktadır. Onu bırakıp bırakmamak konusunda kafanız karışmasın, her GIF'in sadece yer kaplamasını sağlayın.

ImgZilla şu anda yalnızca macOS (12.3 ve üzeri) için desteklenmektedir, Mac App Store'dan edinilebilir. Ücretsiz sürümde günde 10 GIF sıkıştırılabilir, başarılı olanlar kota sayılır - GIF dolu bir klasörü sürükleyin, ne kadar tasarruf edebileceğinizi görün.

Mac App Store · Ücretsiz indir

Daha küçük, daha hızlı görseller mi?

ImgZilla’yı indirin ve yerelde sıkıştırın — görselleriniz Mac’inizden hiç çıkmaz.

ImgZilla logo