ΠΑΡΑΡΤΗΜΑ   Δ

 

 

GIF

 

Γενικά

 

Gif είναι το ακρωνύμιο του Graphics Interchange Format. Το GIF είναι μια δημιουργία της Compuserve Inc. και χρησιμοποιείται για αποθήκευση πολλαπλών raster εικόνων σε ένα μόνο αρχείο για μεταφορά μεταξύ πλατφόρμων και συστημάτων. Το GIF είναι ένα format συναλλαγής κι αποθήκευσης που υποστηρίζεται από πολλές εφαρμογές. Πολλές από τις εικόνες που αποθηκεύονται σ’ αυτό είναι υψηλής - ποιότητας εικόνες ανθρώπων, τοπίων, αστρο-φωτογραφίες κ. α.

Υπάρχουν δύο εκδόσεις του προσδιορισμού GIF, και οι δύο είναι διαδεδομένες. Η αυθεντική έκδοση ήταν η GIF 87a που παρουσιάστηκε το Μάιο του 1987,και δημιουργήθηκαν πολλές εικόνες σ` αυτό το format.Η πιο νέα έκδοση η GIF89a, που παρουσιάστηκε τον Ιούλιο του 1989, προσθέτει αρκετές δυνατότητες συμπεριλαμβανομένης και της ικανότητας να αποθηκεύει δεδομένα κειμένου και γραφικών μέσα στο ίδιο αρχείο. Σε μια εφαρμογή, πάντως θα ήταν χρήσιμη η υποστήριξη και των δύο εκδόσεων του GIF.

To GIF format μπορεί να αποθηκεύει raster δεδομένα με βάθος pixel από 1εως 8 bits. Ο μεγαλύτερος όγκος των GIF αρχείων περιέχει 16 ή 256 χρώματα που πλησιάζουν την ποιότητα των φωτογραφιών. Εικόνες gray-scale όπως αυτές που παράγονται από σαρωτές αποθηκεύονται στο GIF, ωστόσο, μονόχρωμα γραφικά, αποθηκεύονται σπάνια στο GIF. Οι εικόνες αποθηκεύονται πάντα χρησιμοποιώντας το RGB μοντέλο χρώματος και χρησιμοποιώντας δεδομένα παλέτας.

Παρόλο που ο όγκος των GIF αρχείων βρίσκονται στο περιβάλλον MS-DOS της Intel, το GIF ούτε σχετίζεται, ούτε δημιουργήθηκε για τις ανάγκες κάποιου συγκεκριμένου πακέτου ή περιβάλλοντος. Ωστόσο, τα περισσότερα πακέτα, και διαβάζουν και αποθηκεύουν δεδομένα εικόνας GIF. Τέτοια προγράμματα τα σχεδιαστικά, ζωγραφικής, λογισμικό σάρωσης και video και τα περισσότερα προγράμματα εμφάνισης αρχείων εικόνας και μετατροπής αρχείων. Το GIF ήταν προορισμένο να επιτρέπει την εύκολη διακίνηση και προβολή, των δεδομένων εικόνας που αποθηκεύονται σε τοπικά ή απομακρυσμένα συστήματα υπολογιστών. Άλλωστε, πολύ σημαντικό σημείο για το GIF format, είναι η αποτελεσματική μετάδοση των δεδομένων μέσω τηλεφωνικών γραμμών.

 

 

Προβλήματα - Αιτίες

 

Το GIF είναι ένα format που έχει οριστεί και τεκμηριωθεί σωστά, σε ευρεία χρήση, το οποίο διαβάζεται εύκολα και γρήγορα και αποσυμπιέζεται εύκολα. Παρόλα αυτά έχουν παρατηρηθεί και κάποια προβλήματα.

Προβλήματα έχουν παρατηρηθεί όταν εφαρμογές που διαβάζουν μόνο GIF87a αρχεία εικόνας, προσπαθούν να προβάλουν GIF89a αρχεία εικόνας. Παρόλο που το GIF89a format μοιάζει πολύ με το GIF87a, περιέχει αρκετά πρόσθετα μπλοκ πληροφορίας που δεν ορίζονται στο 87α προσδιορισμό. Γι’ αυτό τον λόγο τα GIF89a αρχεία εικόνων δεν μπορούν να διαβαστούν και να εμφανιστούν σωστά από αυτές τις εφαρμογές. Ο λόγος που πολλά από αυτά τα προγράμματα δεν μπορούν να εμφανίσουν ένα GIF89a αρχείο εικόνας, είναι επειδή δεν αναγνωρίζουν τον αριθμό έκδοσης που δηλώνεται στην επικεφαλίδα κάθε GIF αρχείου, αλλάζοντας όμως αυτόν τον αριθμό από «89a» σε «87a» το πρόγραμμα θα μπορέσει να εμφανίσει τα δεδομένα εικόνας αλλά όχι σωστά.

Το GIF είναι ακόμα ικανό να αποθηκεύει πολλαπλές εικόνες ανά αρχείο αλλά το μεγαλύτερο μέρος των GIF αρχείων περιέχουν μόνο μία εικόνα. Άλλωστε λίγες είναι οι εφαρμογές εμφάνισης που υποστηρίζουν την προβολή GIF αρχείων με πολλαπλές εικόνες, σε αντίθεση με τον μεγαλύτερο όγκο των εφαρμογών, οι οποίες συνήθως εμφανίζουν μόνο την πρώτη κατά σειρά εικόνα του GIF αρχείου και τις υπόλοιπες τις αγνοούν.

 

 

Οργάνωση του Αρχείου

 

Το GIF αποτελείται από μία σειρά πακέτων δεδομένων, που λέγονται μπλοκ (block), μαζί με πρόσθετες πληροφορίες. Λόγω της οργάνωσης τους, τα GIF αρχεία πρέπει να διαβάζονται σαν να ήταν μία συνεχή ροή δεδομένων. Τα διάφορα μπλοκ και υπομπλόκ δεδομένων που ορίζονται από το GIF μπορεί να βρεθούν σχεδόν παντού μέσα στο αρχείο.

Υπάρχει ένας αριθμός διαφορετικών κατηγοριών μπλοκ δεδομένων, και καθένα από τα διάφορα οριζόμενα μπλοκ εμπίπτει σε μία από τις κατηγορίες. Τα μπλοκ εκτός από την αποθήκευση πεδίων πληροφορίας μπορούν να περιέχουν υπό-μπλοκ. Κάθε υπομπλόκ δεδομένων ξεκινάει με ένα byte μέτρησης. Η τιμή αυτού του μετρητή μπορεί να κυμαίνεται από 1-225 και δηλώνει τον αριθμό των bytes των δεδομένων στο υπομπλόκ. Τα μπλοκ δεδομένων ακολουθούν αμέσως μετά το byte μέτρησης. Μία συνεχής ομάδα από μπλοκ δεδομένων τερματίζει με ένα byte μηδενικής τιμής, που δηλώνει ότι δεν ακολουθούν άλλα δεδομένα.

 

 

Συστατικά Μέρη του Αρχείου

 

Σε αυτό το σημείο της μελέτης μας θα εξετάσουμε τα συστατικά μέρη των GIF αρχείων. Όπως αναφέραμε και πριν, υπάρχουν δύο εκδόσεις του GIF: η GIF89a και η GIF87a, γι` αυτό θα δούμε λεπτομερειακά τα συστατικά μέρη αυτών ξεχωριστά. Σημειωτέον, ότι όσα θα αναφερθούν παρακάτω για το GIF87a, ισχύουν και για την GIF89a, ενώ όσα περιγράφονται για το GIF89a είναι πρόσθετα χαρακτηριστικά που δεν ισχύουν για την προηγούμενη έκδοση.

 

GIF87a

 

Η έκδοση GIF87a είναι το αυθεντικό GIF format που παρουσιάστηκε τον Μάιο του 1987 και διαβάζεται από το μεγαλύτερο μέρος των εφαρμογών που υποστηρίζουν το GIF format.

 

Στο σχήμα GIF-I φαίνεται το βασικό περίγραμμα ενός GIF87a αρχείου. Κάθε αρχείο πάντα αρχίζει με μια Επικεφαλίδα (Header) και ένα Logical Screen Descriptor.Ένας Global μπορεί να εμφανιστεί κάποιες φορές μετά το Logical Screen Descriptor.Κάθε ένα από αυτά τα τρία τμήματα βρίσκεται πάντα στην ίδια μετατόπιση από την αρχή του αρχείου. Κάθε εικόνα που αποθηκεύεται σ` ένα αρχείο περιέχει έναν Logical Image Descriptor, έναν προαιρετικό Local Color Table και ένα μπλοκ δεδομένων εικόνας. Το τελευταίο πεδίο σε κάθε GIF αρχείο είναι ένας χαρακτήρας τερματισμού, ο οποίος δηλώνει το τέλος της GIF ροής δεδομένων.

 

                       

                     

ΕΠΙΚΕΦΑΛΙΔΑ (HEADER)

 

H επικεφαλίδα έχει μέγεθος 6 bytes και χρησιμοποιείται μόνο για να δηλώσει ότι το αρχείο είναι ένα GIF αρχείο. Περιέχει δύο μεταβλητές, την μεταβλητή Signature και την Version.

H μεταβλητή Signature, έχει μήκος τρία bytes και περιέχει τους χαρακτήρες GIF, ως ένα αναγνωριστικό. Όλα τα GIF αρχεία ξεκινούν με αυτά τα τρία bytes και κάθε αρχείο που δεν τα περιέχει δεν πρέπει να διαβάζεται από μία εφαρμογή ως ένα GIF αρχείο εικόνας.

Η μεταβλητή Version, έχει κι αυτή τρία bytes μήκος και περιέχει την έκδοση του GIF αρχείου. Όπως προαναφέραμε, υπάρχουν μόνο δύο εκδόσεις η GIF87a (το αυθεντικό GIF format) και η GIF89a (το καινούργιο GIF format).

 

 

 

Logical Screen Descriptor

 

Ο Logical Screen Descriptor, o οποίος μπορεί να είναι ξεχωριστός ή όχι από την επικεφαλίδα αρχείου, μπορεί και να θεωρηθεί ως μία δεύτερη επικεφαλίδα.

Ο Logical Screen Descriptor περιέχει πληροφορία που περιγράφει την οθόνη και πληροφορία για το χρώμα που χρησιμοποιείται για να δημιουργηθεί και να εμφανιστεί ένα GIF αρχείο εικόνας. Τα πεδία του : Screen Height και ScreenWidth δείχνουν την ελάχιστη ανάλυση εικόνας που απαιτείται για να εμφανιστούν τα δεδομένα εικόνας.

 

 

GLOBAL COLOR TABLE

 

Ο Logical Screen Descriptor που περιγράψαμε πιο πάνω μπορεί να ακολουθεί από έναν προαιρετικό Global Color Table. Αυτός είναι ένας πίνακας, ο οποίος αν υπάρχει σ` ένα GIF αρχείο, αποτελεί το χάρτη χρωμάτων (color map) που χρησιμοποιείται για την χρωματική αποτύπωση της εικόνας. Αν αυτός ο πίνακας δεν υπάρχει στο GIF αρχείο, τότε κάθε εικόνα που αποθηκεύεται στο αρχείο πρέπει να συνοδεύεται από έναν Local Color Table o οποίος χρησιμοποιείται αντί του Global Color Table.

Ο Global Color Table αποτελείται από μία σειρά στοιχείων των 3-bytes το καθένα, τα οποία συνθέτουν τα στοιχεία του πίνακα χρωμάτων. Κάθε στοιχείο του Global Color Table περιέχει βασικές χρωματικές τιμές για το κόκκινο, πράσινο και μπλε του κάθε στοιχείου του πίνακα χρωμάτων τιμή κυμαίνεται από 0-255.

 

Local Image Descriptor

 

Local Image Descriptor, εμφανίζεται πριν από τα δεδομένα εικόνας και περιέχει πληροφορίες που αφορούν την εικόνα μετά από την οποία ακολουθούν τα δεδομένα εικόνας. Τέτοιες πληροφορίες είναι : η θέση της εικόνας στην οθόνη, το μέγεθος της εικόνας, η ύπαρξη ή μη ενός Local Color Table ( αν δεν υπάρχει Local Color Table, αντί αυτού χρησιμοποιείται ο Global Color Table όπως αναφέραμε παραπάνω ), κ. α..

 

 

ΔΕΔΟΜΕΝΑ ΕΙΚΟΝΑΣ (IMAGE DATA)

 

Τα GIF δεδομένα είναι αποκλειστικά δεδομένα τύπου raster. Τα δεδομένα εικόνας που βρίσκονται σε κάθε GIF αρχείο συμπιέζονται πάντα χρησιμοποιώντας το LZW (Lmpel - Ziv - Welch ) σχήμα κωδικοποίησης. Ο ίδιος αλγόριθμος συμπίεσης, ο LZW χρησιμοποιείται και από τους περισσότερους archivers αρχείου. Γι’ αυτό τα GIF αρχεία δεν συμπιέζονται καλά όταν αποθηκεύονται χρησιμοποιώντας archivers αρχείου όπως το pkzip και το zoo. Άρα η συμπίεση ενός GIF αρχείου είναι μία παραπανίσια λειτουργία, η οποία σπάνια δίνει μικρότερα αρχεία και συνήθως δεν αξίζει τον κόπο και τον χρόνο για την προσπάθεια.

Φυσιολογικά όταν LZW - κωδικοποιημένα δεδομένα εικόνας αποθηκεύονται σε ένα γραφικό format αρχείων, τακτοποιούνται ως μία συνεχή ροή δεδομένων που διαβάζεται από την αρχή ως το τέλος. Το GIF format, ωστόσο, αποθηκεύει κωδικοποιημένα δεδομένα εικόνας σαν μία σειρά από υπό-μπλοκ δεδομένων.

Επειδή τα GIF αρχεία δεν περιέχουν μία συνεχή ροή από LZW - κωδικοποιημένα δεδομένα, κάθε υπό-μπλοκ πρέπει να διαβάζεται και να στέλνονται τα δεδομένα σε έναν LZW κωδικοποιητή. Τα περισσότερα υπο-μπλόκ που αποθηκεύουν δεδομένα εικόνας έχουν μήκος 255 bytes, άρα λοιπόν και το μέγεθος του buffer πρέπει να είναι 255 bytes. Ακόμα, η LZW διαδικασία κωδικοποίησης δεν κρατάει τα ίχνη κάθε γραμμής σάρωσης (από που ξεκινάει και πού τελειώνει κάθε γραμμή ).Είναι ωστόσο πιθανόν μία γραμμή σάρωσης να τελειώνει και μία άλλη να ξεκινάει από τα μέσα του υπο-μπλόκ δεδομένων εικόνας.

Κάθε pixel σε μία κωδικοποιημένη γραμμή σάρωσης έχει πάντα μέγεθος ενός byte και περιέχει έναν δείκτη είτε σε Global, είτε σ’ έναν Local Color Table. Παρόλο που η δομή ενός GIF format είναι αρκετά ικανή να αποθηκεύει πληροφορία χρώματος απ` ευθείας στα δεδομένα εικόνας (ξεπερνώντας την ανάγκη ενός πίνακας χρώματος), ο προσδιορισμός GIF δεν το ορίζει. Ωστόσο ακόμα κι ένα bit δεδομένων εικόνας πρέπει να χρησιμοποιήσει 8-bit τιμές δείκτη και έναν πίνακα χρώματος 2-εισόδων.

Τα GIF δεδομένα εικόνας αποθηκεύονται πάντα σε γραμμές σάρωσης και σε pixel. Οι γραμμές σάρωσης που συνθέτουν τα GIF raster δεδομένα εικόνας, φυσιολογικά αποθηκεύονται σε συνεχή σειρά, αρχίζοντας με την πρώτη γραμμή και φτάνοντας μέχρι και την τελευταία. Το GIF format επίσης υποστηρίζει έναν εναλλακτικό τρόπο για την αποθήκευση των γραμμών των raster δομένων σε μία interlaced σειρά (σε διαδοχικές θέσεις). Οι interlaced εικόνες αποθηκεύονται ως εναλλακτικές γραμμές των raster δεδομένων.

Στο σχήμα GIF-II (βλέπε επόμενη σελίδα) γίνεται σύγκριση της διάταξης των γραμμών που αποθηκεύονται σε ένα interlaced (συνενωτικό) και σ’ ένα non-interlacing format (μη - συνενωτικό format). Στον non-interlaced format, οι γραμμές των raster δεδομένων αποθηκεύονται ξεκινώντας με την πρώτη γραμμή και συνεχίζοντας σειριακά ως την τελευταία. Αυτή είναι η τυπική αποθήκευση για τα περισσότερα raster formats αρχείων. Το interlaced format, ωστόσο, αποθηκεύει τις γραμμές χωρίς να ακολουθεί την φυσιολογική σειρά. Όλες οι άρτιες γραμμές αποθηκεύονται πρώτα και όλες οι περιττές αποθηκεύονται τελευταίες. Μπορούμε ακόμα να δούμε ότι κάθε επιτυχημένο πέρασμα συνήθως κωδικοποιεί περισσότερες γραμμές σε σχέση με το προηγούμενο πέρασμα.

Το GIF χρησιμοποιεί ένα σχήμα τεσσάρων interlacing περασμάτων. Το πρώτο πέρασμα αρχίζει με την γραμμή 0 και διαβάζει κάθε όγδοη γραμμή των raster δεδομένων. Το δεύτερο πέρασμα ξεκινάει με την τέταρτη γραμμή και διαβάζει κάθε όγδοη γραμμή δεδομένων. Το τρίτο πέρασμα ξεκινάει απ’ την δεύτερη γραμμή και διαβάζει κάθε τέταρτη γραμμή. Το τελευταίο πέρασμα ξεκινάει απ` την πρώτη γραμμή και διαβάζει κάθε δεύτερη γραμμή. Χρησιμοποιώντας αυτό το σχήμα, όλες οι γραμμές των raster δεδομένων διαβάζονται και αποθηκεύονται.

Η interlaced διάταξη παρουσιάζει ένα πρόβλημα κατά την μετατροπή μιας GIF εικόνας από ένα format στο άλλο. Ένας πίνακας γραμμών - σάρωσης πρέπει να δημιουργηθεί για να καταγραφούν οι γραμμές σάρωσης με την σωστή τους σειρά.

 

 

 

GIF89a

 

H έκδοση GIF89a είναι η πιο πρόσφατη έκδοση του GIF format αρχείων εικόνας και παρουσιάστηκε τον Ιούλιο του 1989. Στο σχήμα GIF-III φαίνεται το βασικό περίγραμμα ενός GIF89a αρχείου εικόνας (βλ. επόμενη σελίδα).

Όπως είναι φανερό κι από τα σχήματα GIF-I και GIF-III τόσο η έκδοση GIF89a όσο και η 87a ξεκινούν με μία επικεφαλίδα, έναν Logical Screen Descriptor, κι έναν προαιρετικό Global Color Table. Ακόμα περιέχουν έναν Logical Image Descriptor, έναν προαιρετικό Local Color Table κι ένα μπλόκ δεδομένων. Στο τέλος επίσης περιέχουν και οι δύο εκδόσεις το ίδιο πεδίο τερματισμού Trailer.

 

 

 

 

 

Η έκδοση 89a πρόσθεσε όμως νέα χαρακτηριστικά στο GIF format που ονομάζονται Control Extensions (Προεκτάσεις Ελέγχου). Αυτές οι προεκτάσεις στο GIF87a format είναι εξειδικευμένα μπλόκ πληροφορίας που χρησιμοποιούνται για να ελέγχουν την απόδοση των γραφικών δεδομένων που αποθηκεύονται σ` ένα GIF αρχείο εικόνας. Ο σχεδιασμός του GIF87a επέτρεπε μόνο την εμφάνιση εικόνων, μία κάθε στιγμή ολισθαίνοντας η μία μετά την άλλη, σε αντίθεση με το GIF89a το οποίο χρησιμοποιώντας τα δεδομένα του Control Extension επιτρέπει και δεδομένα κειμένου και τύπου-raster γραφικά δεδομένα να εμφανίζονται, επικαλύπτονται και διαγράφονται, ως μία multimedia παρουσίαση.

 

Τα τέσσερα πεδία προέκτασης που αποτελούν το Control Extension και παρουσιάστηκαν από το GIF89a είναι τα εξής : Graphics Control Extension, Plain Text Extension, Comment Extension και Application Extension.

 

 

Graphics Control Extension Block

 

Το Graphics Control Extension Block περιέχει παραμέτρους παρουσίασης που χρησιμοποιούνται για την μετατροπή των δεδομένων που βρίσκονται στο Graphics rendering block, που βρίσκεται αμέσως μετά από αυτό. Μπορεί να μετατρέψει είτε raster δεδομένα απλού κειμένου.

 

 

Plain Text Extension Block

 

TA GIF89a αρχεία έχουν την δυνατότητα να αποθηκεύουν εκτός από raster δεδομένα και πληροφορίες κειμένου, οι οποίες μπορούν να αποδοθούν ως μία εικόνα γραφικών. Το Plain Text Extension Block περιέχει το ίδιο το ASCII κείμενο καθώς και τις αναγκαίες παραμέτρους για την απόδοση αυτού του κειμένου ως μέρος της εικόνας.

Μέσα σ` ένα GIF αρχείο μπορούν να υπάρχουν πολλά τέτοια μπλόκ. Για να εμφανιστούν όμως αυτά τα δεδομένα απλού- κειμένου, ένα πλέγμα είναι απαραίτητο το οποίο θα περιέχει τα δεδομένα. Το ύψος, πλάτος και η θέση αυτού του πλέγματος πάνω στην επιφάνεια της οθόνης, περιγράφονται σ` αυτό το μπλόκ. Κάθε κελί σ`αυτό τ πλέγμα περιέχει ένα χαρακτήρα προς εμφάνιση, ενώ το μέγεθος κάθε κελιού προσδιορίζεται πάλι από το Plain Text Extension Block.

 

 

Application Extension Block

 

To Application Extension Block περιέχει πληροφορίες οι οποίες απευθύνονται συγκεκριμένα σ` εφαρμογές, με τρόπο παρόμοιο της ετικέτας (tag) του TIFF format αρχείων. Αυτές οι πληροφορίες μπορούν να χρησιμοποιηθούν για να ελέγχουν το σύστημα και τον τρόπο με τον οποίο οι GIF εικόνες εμφανίζονται. Ακόμα πληροφορίες που δεν συνηθίζεται να βρίσκονται σ` ένα GIF αρχείο, μπορούν να αποθηκευθούν σ`ένα Application Extension block και να διαβαστούν από οποιαδήποτε εφαρμογή, η οποία γνωρίζει τον τρόπο με τον οποίο πρέπει να μεταφραστούν τα δεδομένα. Μέσα σ`ένα GIF αρχείο μπορούν να υπάρχουν πολλά τέτοια μπλόκ. Παραδείγματα δεδομένων που μπορούν να αποθηκεύσουν σ’ ένα Application Extension block περιλαμβάνουν εντολές για αλλαγή του video mode, αίτηση για ειδική επεξεργασία στα προβαλλόμενα δεδομένα εικόνας και για αποθήκευση πρόσθετων πινάκων χρώματος. Ακόμα πληροφορίες για την διαχείριση των αρχείων, για την πρόσβαση σε περιφερειακές συσκευές, όπως modem, εκτυπωτές κ.α.

 

 

Comment Extension Block

 

Το Comment Extension Block χρησιμοποιείται για εισαγωγή ενός κατανοητού για τον άνθρωπο κείμενο σε ένα GIF αρχείο ή μία ροή δεδομένων. Κάθε σχόλιο μπορεί να περιέχει πάνω από 255 7-bit ASCII χαρακτήρες, συμπεριλαμβανομένων κι όλων των ASCII χαρακτήρων ελέγχου. Μέσα σ`ένα GIF αρχείο μπορούν να υπάρχουν πολλά τέτοια μπλόκ, τα οποία βρίσκονται οπουδήποτε στο αρχείο, αλλά οπωσδήποτε κάτω από τον Global Color Table. Όλα τα δεδομένα που αποθηκεύονται σ’ αυτό το μπλόκ είναι σχεδιασμένα για να διαβάζονται μόνο από τον χρήστη του αρχείου, όταν αυτός εξετάζει την GIF ροή δεδομένων του αρχείου. Αντίθετα, αυτά τα δεδομένα (σχόλια) πρέπει να αγνοηθούν από την εφαρμογή που διαβάζει την GIF ροή δεδομένων. Αυτά τα σχόλια συνήθως χρησιμοποιούνται για να αναφέρουν τον δημιουργό της GIF εικόνας, την εφαρμογή που την δημιούργησε, την ώρα και την ημερομηνία δημιουργίας, κ.α..

 

 

ΣΥΜΠΙΕΣΗ

 

Τα δεδομένα εικόνας σε ένα GIF αρχείο συμπιέζονται πάντα με τον LZW (Lempel-Ziv-Welch) αλγόριθμο συμπίεσης. Αυτός ο αλγόριθμος μειώνει μία σειρά ιδανικών τιμών bytes σε μια μόνο κωδική λέξη και είναι ικανός να μειώσει το μέγεθος των τυπικών 8-bit pixel δεδομένων ως 40 τις εκατό ή ακόμη παραπάνω. Η δυνατότητα να αποθηκεύει ασυμπίεστα δεδομένα, ή δεδομένα κωδικοποιημένα σύμφωνα με άλλο συμπιεστικό σχήμα, δεν υποστηρίζεται από το GIF format.