Bir GIF seçin
—
Tarayıcınızın kendi çözücüsü, dosyayı olduğu gibi oynatıyor.
- Sürüm
- —
- Tuval
- —
- Dosya boyutu
- —
- Kareler
- —
- Yazıldığı hâliyle
- —
- Oynadığı hâliyle
- —
- Döngü
- —
- Çizilen renkler
- —
Göze çarpanlar
Aşağıdaki her şey bu dosyadan ölçülmüştür. Hiçbiri neyi yapmak istediğinize dair bir tahmin değildir.
Baytlar nereye gitti
Dosyanın her baytı tam olarak bir satırdadır ve satırların toplamı dosyayı verir. Vermeseydi, çubuk sessizce uzayıp sığdırmak yerine son satır bunu söylerdi.
Aşağıdaki tablonun aynı rakamları, tek bir çubuk olarak çizilmiş.
| Bölüm | Bayt | Pay |
|---|---|---|
| Dosyanın tamamı | — | %100 |
Kare kare
Renkler
Genel tablo
Kare başına tablolar
Başka ne var
Görüntü taşımayan bloklar. Bir görüntüleyici hepsini atlar ve dosyanın her kopyası onları yine de taşır.
{name} okunuyor… {name} bir GIF değil: {why}. Bu araç GIF biçiminin kendisini okur, dolayısıyla başka dosyalar hakkında söyleyecek bir şeyi yoktur. {name} okunamadı: {why} dosya {available} baytta bitiyor, {at} konumunda ise {wanted} bayt daha gerekiyordu bu dosya «GIF» ile değil, {what} ile başlıyor bir JPEG bir PNG bir RIFF dosyası — bir WebP ya da bir WAV bir PDF bir zip dosyası {bytes} baytları kod boyutu {size}, oysa biçim 2 ile 8 arasına izin veriyor {n} kare {n} kare {n} renk {n} renk {n} girdi {n} girdi kare başına {n} tablo kare başına {n} tablo {n} kez {n} kez {n} bayt {minutes} dk {seconds} sn {n} sn {time} ({fps} fps) {n} kare 0,02 sn’den kısa süre istiyor, her tarayıcı ise bunları 0,10 sn tutuyor. bir kez — döngü bloğu yok sonsuza dek {n} kez Sorun Bilmekte fayda var Not {frames}. Bunların {drawn} tanesi burada çiziliyor; geri kalanı hepsini birden bellekte tutmak için fazla büyük, o yüzden yalnızca başlıklarından anlatılıyor. {frames}; hiçbiri tuvalin tamamını kaplamıyor. {frames}; hepsi tuvalin tamamını kaplıyor. {frames}; bunların {n} tanesi tuvalin tamamını kaplıyor. Kalan {frames} gösterilsin {n}. karenin tek başına tuttuğu şey {n}. kareden sonraki tuval Kare {n} çizilmedi Gecikme {delay} → 0,10 sn Dikdörtgen {left}, {top} konumunda {width} × {height} Palet {n} kendine ait genel olan hiç yok Saydam {n}. dizin hayır Boyut {size} — {share} Geçmeli evet Sıkıştırma {ratio}× Sıkıntı veri erken bitiyor Bu dosyadaki tablolar toplamda {declared} bildiriyor, pikseller bunların {referenced} tanesine gönderme yapıyor ve bunların {different} tanesi birbirinden farklı. {entries}, {size}, {frames} tarafından paylaşılıyor. Soluk girdiler, hiçbir pikselin göndermede bulunmadığı girdilerdir. {tables} (toplam {size}) Kare {n} — {colours} {n} tanesinden ilk 24’ü gösteriliyor. Gerisi indirilebilir raporda. Bir açıklama. Hiçbir görüntüleyici göstermez, dosyanın her kopyası onu taşır. Döngü bloğu; sonsuza dek oynatmayı söyler. GIF belirtiminin parçası değildir: Netscape 1995’te uydurdu, gene de her şey uyguladı. Döngü bloğu; {times} oynatmayı söyler. Bir XMP paketi: bir görüntü düzenleyicinin ne yaptığını kaydetmek için yazdığı XML. Hiçbir şey onu çizmez. Bir ICC renk profili; paletin sayılarının renk olarak ne demek olduğunu söyler. Bunu bir GIF içinden okuyan neredeyse hiçbir şey yoktur. Bir düz metin bloğu; görüntüleyiciden resmin üzerine metin çizmesini ister. 1989 belirtiminde vardı ve hiçbir şey tarafından hiç uygulanmadı. Bir uygulama bloğu. Görüntüleyiciler tanımadıklarını atlar. Süresi yazıldığı gibi {time} Gerçekte oynayan {time} - 0,02 sn altındaki {n} kare her tarayıcıda 0,10 sn ye çekilir Hız saniyede {fps} kare Döngüler döngü bloğu yok - bir kez oynar Genel palet {n} renk yok Çizilen renkler Arka plan dizini Kopyalandı. Düz metindir ve yalnızca panonuza gitti. Bu tarayıcı sayfanın panoya yazmasına izin vermedi. Bunun yerine «İndir»i kullanın. Başlık ve ekran tanımı İmza, tuval boyutu ve bayraklar. On üç bayt; yapılmış her GIF’te var. Genel renk tablosu Her biri üç bayt olan {colours} renk; kendi tablosunu getirmeyen her karenin ortak kullandığı. Bu dosyada yok: her kare kendi paletini taşıyor. Kare başına renk tabloları Başka renklere ihtiyaç duyan bir kare için ona ait bir palet. Her seferinde renk başına üç bayt. Kare zamanlama blokları Kare başına sekiz bayt: bekleme süresi, temizleme yöntemi ve hangi rengin saydam olduğu. Kare tanımları Kare başına on bir bayt: dikdörtgenin nerede durduğu, ne kadar büyük olduğu ve sıkıştırıcının başlangıç kod boyutu. Sıkıştırılmış pikseller Resmin kendisi, LZW ile sıkıştırılmış. Sağlıklı bir GIF’te bu, dosyanın neredeyse tamamıdır. Blok çerçeveleme Her 255 baytlık veri için bir uzunluk baytı, artı her diziyi bitiren bir sıfır. Kaçınılmaz, ve görülmeye değer. Yorumlar ve üst veri Döngü blokları, yorumlar, renk profilleri ve bir programın geride bıraktığı her türlü XMP. Sonlandırıcı Dosyanın bittiğini söyleyen tek bir bayt. Sondan sonraki baytlar Sonlandırıcının ötesinde duran veri. Hiçbir çözücü onu okumaz, ve o salt yüktür. Hesaba katılmayan Bu okuyucunun durduğu blokların içindeki baytlar. Blok ortasında biten bir dosya böyle baytlar bırakır. İki kez sayılan Bloklar üst üste biniyor; yani bu dosya, blokların nerede başladığı konusunda kendisiyle çelişiyor. Belirtilmemiş Olduğu yerde bırak Arka plana dön Altında ne varsa geri getir Ayrılmış ({n}) Temizleme GIF çözümlemesi — {name} Tümüyle tarayıcıda, abox.tools/gif-analyzer/ tarafından okundu. Dosya yüklenmedi. Dosya Sürüm Tuval {width} x {height} piksel Boyut {rounded} ({exact}) Kareler Baytlar nereye gitti Toplam Göze çarpanlar Kareler Dosyanın taşıdığı metin Genel palet {colours} kendine ait genel tam tuval no konum boyut süre temizleme palet bayt Dosya kapanış baytı olmadan bitiyor, yani eksik — erken kesilmiş bir indirme ya da yarıda kalmış bir dosya. {at} numaralı bayt 0x{marker}, ve bu biçimdeki hiçbir bloğun başı değil. Ondan sonrası göz ardı edildi. Arka arkaya iki grafik denetim bloğu, {first} ve {second} konumunda. İlki hiçbir görüntüyü anlatmıyor ve hiçbir şey yapmıyor. Dosya, {at} konumunda başlayan bir bloğun ortasında bitiyor. {detail}. {code} kodu, sözlükte henüz hiçbir şey yokken ilk sırada geldi. Bir görüntüleyici yapabildiğini çizer, dikdörtgenin kalanını boş bırakır. {code} kodu sözlükteki {code} numaralı girdiyi gösteriyor, oysa yalnız {entries} girdi var. Bir görüntüleyici yapabildiğini çizer, dikdörtgenin kalanını boş bırakır. Bu dosyada hiç kare yok. Başlık okunabildi, ama ardından bir görüntü bloğu gelmedi. Bu her ne ise, hiçbir görüntüleyici ondan bir şey çizmeyecek. Dosya temiz bitmiyor. Dosyanın bitiminden sonra {bytes} duruyor. Her çözücü kapanış baytında durur, yani bunlar hiç okunmaz ve hiç çizilmez. Genellikle ilkine eklenmiş ikinci bir dosyadır ya da kendi sınırını aşarak yazmış bir programdır. Dosyayı kapanış baytından kesmek hiçbir şey kaybettirmez. Bir kare 0,02 saniyeden kısa durmak istiyor, ve bunu hiçbir tarayıcı yapmaz. {count} kare 0,02 saniyeden kısa durmak istiyor, ve bunu hiçbir tarayıcı yapmaz. Netscape’ten bu yana her tarayıcı, saniyenin iki yüzde birinden kısa bir gecikmeyi ona yuvarlar — 1996’da o zamanın dönen dünya küreleri için yazılmış ve hiç kaldırılmamış bir kural. Yani bu canlandırma {nominal} sürdüğünü söylüyor, gerçekte {real} sürüyor, aşağı yukarı {factor} kat daha yavaş. 0,01 yerine 0,02 yazmak ona istediği hızı verir. Her karenin gecikmesi sıfır. Dosya hiçbir süre bildirmiyor, dolayısıyla hangi hızda oynayacağı tümüyle görüntüleyiciye kalmış — genellikle saniyede on kare, ama bunu güvence altına alan bir şey yok. İki tarayıcı bunu iki farklı hızda oynatabilir ve ikisi de haklı olur. Karelerin zamanlaması düzenli değil: {shortest} ile {longest} arasında {delays} farklı gecikme. Sonda uzun tutulan bir kare bilinçlidir ve yaygındır. Ortalara serpilmiş gecikmeler ise genellikle bir videodan kare düşüren ve boşluğu kapatmak için komşularını uzatan bir dönüştürücüden gelir. Döngü bloğu yok, yani bu bir kez oynayıp duruyor. Döngü, GIF belirtiminin parçası değildir. Netscape’in 1995’te icat ettiği ve herkesin yine de uyguladığı bir bloktur; onsuz bir dosya, her tarayıcının tam olarak bir kez gösterdiği dosyadır. Burada döngü amaçlanmışsa, bunu yazan program bloğu koymayı unutmuş. Bu bir kez oynayıp duruyor. Bu {count} kez oynayıp duruyor. Döngü bloğu, her zamanki sıfır yerine — ki sıfır sonsuz demek — bir sayı belirtiyor. Bazı eski görüntüleyiciler sayıyı göz ardı edip yine de sonsuz döner. Her kare tuvalin tamamını yeniden çiziyor. Bir GIF, kareden yalnızca bir öncekine göre değişen dikdörtgeni saklayabilir; neredeyse durağan bir pencerenin ekran kaydının küçük olabilmesinin nedeni budur. Burada bunu yapan yok: her kare tuvalin tamamı, {width}×{height}. Birbiriyle ilgisiz resimlerden yapılmış kareler için doğrudur; çekilmiş ya da kaydedilmiş, görüntünün büyük bölümünün kımıldamadığı her şey içinse boşa harcanmış yerdir. {total} kareden biri tuvalin tamamını yeniden çiziyor; kalanlar yalnızca değişen kısmı saklıyor. {total} kareden {count} tanesi tuvalin tamamını yeniden çiziyor; kalanlar yalnızca değişen kısmı saklıyor. İyi eniyilenmiş bir GIF böyle görünür. Tam tuval olanlar genellikle ilk karedir ve görüntünün baştan sona değiştiği her noktadır. Hiçbir kare tuvalin tamamını yeniden çizmiyor. İlkinden sonraki her kare yalnızca değişen dikdörtgeni saklıyor; biçim böyle kullanılır ve bu dosyanın bu kadar küçük olmasının nedeni de budur. Bir kare tuvalin dışına taşıyor. {count} kare tuvalin dışına taşıyor. Tuval {width}×{height} ve bir kare, kenardan taşan bir dikdörtgen talep ediyor. Çözücüler taşan kısımla ne yapılacağı konusunda anlaşamaz: kimi kırpar, kimi dosyayı geri çevirir. Tuval {width}×{height} ve bazı kareler kenardan taşan bir dikdörtgen talep ediyor. Çözücüler taşan kısımla ne yapılacağı konusunda anlaşamaz: kimi kırpar, kimi dosyayı geri çevirir. Bir kare kendi renk tablosunu taşıyor; bu {bytes} tutuyor — dosyanın {share} kadarı. {count} kare kendi renk tablosunu taşıyor; bu {bytes} tutuyor — dosyanın {share} kadarı. Kendine ait bir palet, kareye ortak tabloda bulunmayan renkleri kullanma imkânı verir ve yazıldığı her seferde girdi başına üç bayta mal olur. Kareler aynı sahneye aitse, hepsi için tek bir tablo hem daha küçüktür hem de izlerken daha durgundur: kareler arasında sıçrayan bir palet, GIF titremesi dediğimiz şeyin ta kendisidir. Genel renk tablosu yok. Bunda yanlış bir şey yok — burada her kare kendi tablosunu getiriyor — ama ilk kare gelmeden önce görüntüleyicinin tuvali boyayacak hiçbir şeyi olmadığı anlamına gelir. Renk tablolarındaki {entries} girdi hiç kullanılmıyor; bu {bytes} ediyor. Bu dosyadaki tablolar {declared} renk bildiriyor, pikseller ise bunların {referenced} tanesine başvuruyor. Bir renk tablosu, içinde ne olursa olsun ikinin kuvveti uzunluğundadır; dokuz renk kullanan bir kare yine de on altı girdi alır, yani bir miktar yukarı yuvarlama kaçınılmazdır. Bundan çok fazlası, paletlerin karede sonunda yer alandan başka bir görüntü için kurulduğu anlamına gelir. Tüm canlandırma tek renkle çiziliyor. Tüm canlandırma {count} renkle çiziliyor. Bu düz bir çizim, ve GIF tam bunun için tasarlandı. Böyle bir dosya iyi sıkışır, taramayı ise kötü kaldırır; benekli görünüyorsa kapatılması gereken şey taramadır. Bir fotoğraf ya da fotoğraftan üretilmiş bir şey. GIF bir kareye en çok 256 renk verir, dolayısıyla içinde geçiş olan her şey yaklaşık olarak veriliyor — tarama da, dosyayı büyüten gürültü de buradan gelir. Bu dosyada {bytes} büyüklüğünde bir yorum bloğu var. Yorumları hiçbir görüntüleyici göstermez ve dosyanın her kopyası onları taşır. Genellikle dosyayı yazan programın adıdır, arada bir de yazarının yayımlamayı seçmeyeceği bir şeydir. Bir XMP üstveri paketi {bytes} yer kaplıyor — dosyanın {share} kadarı. XMP, bir görüntü düzenleyicinin yaptıklarını kaydetmek için yazdığı XML bloğudur; düzenleme geçmişini, yazılımı ve bazen yazarı taşıyabilir. Hiçbir görüntüleyici bundan bir şey çizmez. Kaldırmak görüntüye hiçbir şeye mal olmaz. Bir ICC renk profili {bytes} yer kaplıyor. Profil, paletteki sayıların renk olarak ne anlama geldiğini söyler. Bir GIF’in içinden bunu okuyan neredeyse hiçbir şey yoktur, yani çoğunlukla boşuna ağırlıktır — ama kaldırmak, okuyan görüntüleyicilerde renkleri kaydırabilir. Bu dosyada düz metin uzantısı var. Görüntüleyiciden, resmin üzerine hücrelerden oluşan bir ızgarada metin çizmesini isteyen bir blok. 1989 belirtiminde vardı, hiçbir şey tarafından uygulanmadı ve her çözücü onu atlar. İçinde ne yazarsa yazsın görünmeyecek. “{name}” adında, {bytes} büyüklüğünde bir uygulama bloğu var. Uygulama blokları, belirtimin dışında kalan her şeyin bir GIF’e girme yoludur. Görüntüleyiciler tanımadıklarını atlar, yani belirli bir şey bunu okumuyorsa bu blok yalnızca ağırlıktır. Bir kare taramalı saklanmış. {count} kare taramalı saklanmış. Satırlar dört geçişte saklanır; böylece yavaş bir hat üzerinden gelen bir görüntü, kendisinin kaba bir sürümünü erkenden gösterirdi. 1993’te anlamlıydı, satırları sırayla saklamaktan biraz daha kötü sıkışır, ve bugün hiçbir görüntüleyici bundan kazançlı çıkmaz. Bu dosya GIF89a değil, GIF{version} olduğunu söylüyor. GIF87a önce geldi; zaman blokları, saydamlık ve döngü bloğu yoktur. Bunlardan herhangi birini taşırken 87a olduğunu bildiren bir dosya yaygındır — çözücüler denetlemez — ama bu, başlığın yazılmak yerine kopyalandığının işaretidir. Arka plan rengi {index} numaralı girdi, oysa genel tabloda yalnızca {entries} girdi var. Hiçbir şey çökmez — görüntüleyiciler onun yerine saydamı kullanır — ama bu, alanın hiç doldurulmadığı ya da artık dosyadaki olmayan bir palet için doldurulduğu anlamına gelir. Piksel en boy oranı {ratio} olarak ayarlanmış. Kare piksele sahip olmayan ekranlar için bir alan. Bugünkü her görüntüleyici bunu göz ardı eder ve kareyi saklandığı boyutta çizer; buna güvenen bir dosya, yapan kişiye gerilmiş, herkese normal görünür. Sıkıştırıcı sözlüğünü {count} kez sıfırladı. LZW ilerledikçe bir sözlük kurar ve 4.096 girdi alır; dolduğunda kodlayıcı baştan başlar. Kare başına bir kez normaldir — bir kare böyle başlar. Fazlası, görüntünün sözlüğü yarı yolda tüketecek kadar çeşitli olduğu anlamına gelir; bir fotoğraf ya da ağır tarama bunu yapar, ve o dosyaların büyük olmasının nedeni budur. Bir kare bir öncekiyle birebir aynı. {count} kare bir öncekiyle birebir aynı. Sıkıştırılmış boyutlarının tamamına mal oluyorlar ve ekranda hiçbir şeyi değiştirmiyorlar. Gecikmelerini bunun yerine önceki kareye eklemek tıpatıp aynı görünür ve daha küçük olurdu. Bir kare tam olarak çözülemiyor. {count} kare tam olarak çözülemiyor. Sıkıştırılmış veri, kare dolmadan bitiyor. Bir görüntüleyici yapabildiğini çizer, dikdörtgenin kalanını boş bırakır. GIF'iniz hiçbir yere gitmedi. {total} dosya yüklendi. {platform} bir şey {hosts} ile iletişim kurdu; bu araç bunu asla yapmaz. {platform} Sayfanın kendi reklam, ölçüm ve bağış düğmesi betikleri {hosts} sunucudan yüklendi; hiçbirine bir dosya verilmedi. Sayfanın kendi reklam, ölçüm ve bağış düğmesi betikleri {hosts} sunucudan yüklendi; hiçbirine bir dosya verilmedi.