aspose.info
TR

FLIF Dosya Biçimi

Güncellendi

FLIF dosyası nedir?

FLIF (Free Lossless Image Format), dosyaları için .flif uzantısını kullanan kayıpsız bir görüntü formatıdır. FLIF, sıkıştırma oranı açısından PNG, kayıpsız WebP, kayıpsız BPG ve kayıpsız JPEG 2000’den daha iyi performans gösterdiğini iddia ediyor. FLIF, görüntünün herhangi bir kısmi indirilmesinin tüm görüntü için kayıplı bir kodlama olarak kullanılabilmesi nedeniyle aşamalı tarama kullanır.

Kısa Tarih

FLIF, Eylül 2015’te duyuruldu ve alfa sürümü Ekim 2015’te yayınlandı. Eylül 2016’da FLIF’in ilk kararlı sürümü yayınlandı.

FLIF Tasarım

FLIF, sıkıştırma için bir CABAC (Bağlama uyarlanabilir ikili aritmetik kodlama), MANIAC (Meta Uyarlamalı Sıfıra Yakın Tamsayı Aritmetik Kodlama) varyantını kullanır. MANIAC, Jon Sneyers ve Pieter Wuille tarafından geliştirilen bir entropi kodlama algoritmasıdır. MANIAC’ta bağlamlar, kodlama zamanında dinamik olarak öğrenilen karar ağaçlarının düğümleridir. Bu, bağlam modelini daha görüntüye özgü hale getirir ve daha iyi bir sıkıştırma sağlar. FLIF aşağıdaki özelliklere sahiptir:

  • Kayıpsız sıkıştırmayı destekler
  • Kodlayıcı ön işleme ile kayıplı sıkıştırmayı destekler
  • Gri Tonlama, RGB ve RGBA’yı destekler
  • Kanal başına 1 ila 16 bit renk derinliğini destekler
  • Taramalı ve taramasız dosyaları destekler
  • Kısmen indirilen dosyaların aşamalı kod çözmesini destekler
  • Animasyonları destekler
  • Katıştırılmış ICC renk profillerini, Exif ve XMP meta verilerini destekler
  • Camera raw dosyalarını (RGGB) sıkıştırmak için sınırlı desteğe sahiptir

FLIF Dosya Biçimi

Bir FLIF dosyası aşağıdaki dört bölümden oluşur:

Ana Başlık

Ana başlık, genişlik, yükseklik, renk derinliği, çerçeve sayısı gibi ana meta verileri içerir.

TürDeğerAçıklama
4 bayt“FLIF”Sihir
4 bit3 = ni hareketsiz; 4 = hala; 5 = ni hayvan; 6 = i animTitreşim, animasyon
4 bit1 = Gri Tonlama; 3 = RGB; 4 = RGBAKanal sayısı (nb_channels)
1 bayt‘0’,‘1’,‘2’ (‘0’=özel)Kanal başına bayt (Bpc)
varentgenişlik-1Genişlik
varentboy-1Boy
varintnb_frames-2 (yalnızca animasyon ise)Kare sayısı (nb_frames)

Meta veri parçaları

Bu bölüm, DEFLATE sıkıştırması kullanılarak kodlanmış Exif/XMP meta verileri, ICC renk profili vb. gibi piksel olmayanları içerir. Bu yığınlar, ayna boyutunun değişken sayıda bayt ile kodlanmış olması farkıyla, PNG parçalarına benzer şekilde tanımlanır. Parçaların adları 4 harf (4 bayt) veya isteğe bağlı olmayan bir yığını belirten 32’nin altında bir değer olabilir.

Aşağıda isteğe bağlı aynalara bir örnek verilmiştir:

Yığın adıAçıklamaİçerik (DEFLATE-açma işleminden sonra)
iCCPICC renk profiliham ICC renk profili verileri
eXifExif meta verileri“Exif\0\0” başlığını takip eden bir TIFF başlığı ve EXIF verileri
eXmpXMP meta verileriXMP, dolgusuz salt okunur bir xpacket içinde bulunur

Adlandırma kuralı

  • İlk Harf: Kritik için büyük, kritik olmayan parçalar için küçük harf kullanılır.
  • İkinci Harf: Genel için büyük, özel parçalar için küçük harf kullanılır
  • Üçüncü Harf: Görüntünün doğru görüntülenmesi için gerekli aynalar için büyük harf kullanılır ve görüntünün görüntülenmesi için küçük harf önemli değildir.
  • Dördüncü Harf: Büyük harf, körü körüne güvenle kopyalanabilen aynalar için kullanılır. Küçük harfli aynalar görüntü verilerine bağlıdır.

İkinci Başlık

Bu, piksellerin gerçek kodlamasına ilişkin bilgileri içerir.

TürAçıklamaKoşulVarsayılan Değer
1 baytNUL baytı (0x00), bir FLIF16 bit akışının öbek adı
uni_int(1,16)Kanalların piksel başına bit sayısıBpc == ‘0’: tekrar(nb_channels)8 if Bpc == ‘1’, 16 if Bpc == ‘2’
uni_int(0,1)İşaret: alpha_zeronb_channels > 30
uni_int(0,100)Döngü sayısınb_frames > 1
uni_int(0,60_000)ms olarak çerçeve gecikmesinb_frames > 1: tekrar(nb_frames)
uni_int(0,1)İşaret: has_custom_cutoff_and_alpha
uni_int(1.128)cutoffhas_custom_cutoff_and_alpha2
uni_int(2.128)alfa bölenhas_custom_cutoff_and_alpha19
uni_int(0,1)İşaret: has_custom_bitchancehas_custom_cutoff_and_alpha0
?Bitchancehas_custom_bitchance
değişkenDönüşümler (aşağıya bakın)
uni_int(1) = 0Gösterge biti: dönüşümlerle tamamlandı
uni_int(0,2)Görünmez piksel tahmincisialpha_zero && taramalı && alfa aralığı sıfır içerir

Kanallar

Kanal numarasıAçıklama
0Kırmızı veya Gri
1Yeşil
2Mavi
3Alfa

Dönüşümler

TürAçıklama
uni_int(1) = 1Gösterge biti: henüz yapılmadı
uni_int(0,13)Dönüşüm tanımlayıcısı
değişkenDönüşüm verileri (dönüşüme bağlıdır)

Dönüştürme, daha iyi sıkıştırma için piksel verilerini değiştirmek ve gerçekte oluşan piksel değerlerini takip etmek için kullanılır.

Piksel Verileri

Bu bölüm, MANIAC entropi kodlaması kullanılarak kodlanmış gerçek piksel verilerini içerir. Pikseller, taramalı veya taramasız kodlama kullanılarak kodlanabilir.

Geçmeli yöntem

Bu yöntemde yakınlaştırma seviyeleri tanımlanır. Zoomlevel 0 tam görüntü için kullanılır, zoomlevel 1 tüm çift sayılı satırlar için kullanılır, zoomlevel 2 zoomlevel 1’in tüm çift sayılı sütunları için kullanılır. Başka bir deyişle, her çift sayılı zoomlevel 2k, görüntü, 1:2^k ölçeğinde. Yakınlaştırma seviyeleri en yüksekten en düşüğe doğru kodlanmıştır.

Titreşimsiz yöntem

Bu yöntemde, MANIAC ağaçlarının kodlanması hemen ardından piksellerin kodlanmasıyla başlar.

Referanslar

Ayrıca bakınız