emptygif
Harshe: Hausa

GIF transparent mafi ƙanƙanta byte 43 ne.

Ga shi duka. Zaɓi kowane byte don ganin aikinsa, sannan ka kwafi fayil ɗin, ka sauke shi, ka yi hotlink ɗinsa, ko ka bayar da shi daga code ɗinka.

GIF mai byte 43, an ƙara girmansa: pixel transparent ɗaya
0000
0010
0020
Sauke 1×1.gif

R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

Aikin kowane byte

GIF jerin blocks ne. Wannan yana da guda bakwai, kuma kowane launi a wannan shafi na ɗaya daga cikinsu ne. Zaɓi byte ko block don karanta shi. Ana adana lambobi a tsarin little-endian: byte mai ƙaramin matsayi (low byte) ne ke zuwa farko, don haka 01 00 yana nufin 1.

ByteFiliMa'ana
Header Yana gaya wa decoder cewa wannan GIF ne, da kuma wace siga ta tsarin za a yi tsammani.
47 49 46Sa hannuHaruffan ASCII “GIF”. Kowane fayil na GIF yana farawa da su.
38 39 61Siga“89a”. Ana buƙatar 89a don transparency; 87a ba shi da extension na sarrafa zane.
Mai siffanta allo (logical screen) Girman canvas da yadda aka tsara teburin launukansa.
01 00Faɗin canvas1 px.
01 00Tsawon canvas1 px.
80Flags da aka haɗaSaituna huɗu da aka matse cikin byte ɗaya. Bit na sama yana nuna cewa teburin launuka na gaba ɗaya yana biye; bit uku na ƙarshe suna ba da girmansa.
00Index na launin bangoLauni na 0 a palette. Burauzoyi suna watsi da shi kuma suna nuna abin da ke bayan hoton.
00Rabon faɗi da tsawon pixel0 yana nufin pixels masu murabba'i, babu gyara.
Teburin launuka na gaba ɗaya Palette ɗin. Pixels suna adana index zuwa wannan jeri maimakon launi.
FF FF FFLauni a paletteJa, kore da shuɗi, byte ɗaya kowanne: #ffffff. Launuka biyu su ne mafi ƙanƙantar tebur da GIF zai iya samu.
00 00 00Launi a paletteJa, kore da shuɗi, byte ɗaya kowanne: #000000. Launuka biyu su ne mafi ƙanƙantar tebur da GIF zai iya samu.
Extension na sarrafa zane Block na zaɓi da aka ƙara a GIF89a. A nan yana sa launi na 0 a palette ya zama transparent.
21Mai gabatar da extension0x21 (“!”) yana sanar da block na extension.
F9Label na sarrafa zane0xF9 yana nuna cewa wannan extension na sarrafa zane ne.
04Girman blockByte 4 na saituna suna biye.
01Flags da aka haɗaBit mafi ƙasa shi ne flag na transparency. A kunne yake, don haka ana amfani da index na launin transparent da ke ƙasa.
00 00Jinkiri0/100 na daƙiƙa. Yana da tasiri ne kawai a hotuna masu motsi (animation).
00Index na launin transparentAna zana launi na 0 a palette a matsayin transparent gaba ɗaya.
00Mai rufe blockSub-block mai tsawon sifili da ke rufe block ɗin.
Mai siffanta hoto Inda hoton yake a kan canvas da girmansa.
2CMai raba hoto0x2C (“,”) yana fara hoto.
00 00HaguHoton yana farawa 0 px daga gefen hagu na canvas.
00 00SamaHoton yana farawa 0 px daga gefen sama na canvas.
01 00Faɗin hoto1 px.
01 00Tsawon hoto1 px.
00Flags da aka haɗaBabu teburin launuka na gida, ba interlaced ba. Hoton yana amfani da palette na gaba ɗaya.
Bayanan hoto Pixels ɗin, an matsa su da LZW kuma an raba su zuwa sub-blocks masu girman har zuwa byte 255.
02Mafi ƙarancin girman code na LZW2, don haka matsattsun codes suna farawa da faɗin bit 3.
02Girman sub-blockByte 2 na matsattsun bayanai suna biye.
44 01Matsattsun pixelsCodes na LZW da aka tattara daga bit mafi ƙasa zuwa sama. Duba yadda ake decoding ɗinsu a ƙasa.
00Mai rufe blockSub-block mai tsawon sifili da ke rufe block ɗin.
Trailer Byte ɗaya da ke nuna ƙarshen fayil.
3BTrailer0x3B (“;”) yana kawo ƙarshen fayil.

Cikin bytes ɗin da aka haɗa

Kowane ɗaya daga cikin bytes uku yana adana ƙananan saituna da dama. Bit 7 shi ne na can hagu.

Mai siffanta allo (logical screen) 0x80
1Akwai teburin launuka na gaba ɗaya
000Ƙudurin launi
0An jera palette bisa muhimmanci
000Girman tebur: launuka 2^(n+1)
Extension na sarrafa zane 0x01
000An keɓe
000Hanyar kawarwa (disposal)
0Jira shigarwar mai amfani
1Transparency a kunne
Mai siffanta hoto 0x00
0Akwai teburin launuka na gida
0Interlaced
0An jera palette bisa muhimmanci
00An keɓe
000Girman teburin gida

Yadda bytes biyu ke ɗauke da pixel ɗaya

Da mafi ƙarancin girman code 2, decoder yana karanta codes na bit 3. Code 4 yana share tebur, code 5 yana kawo ƙarshen hoto, kuma codes 0 zuwa 3 launuka ne a palette. Ana karanta bytes 44 01 daga bit mafi ƙasa zuwa sama:

0x44 010001000x01 00000001

  1. 001100 = 4Clear: fara da sabon tebur
  2. 000000 = 0Pixel: launi na 0 a palette
  3. 101101 = 5Ƙarshen hoto
  4. 0000000 Bits na cike gurbi da ba a amfani da su

Manyan hotuna suna amfani da dabara iri ɗaya: kowane sabon code yana wakiltar jerin pixels da ya fi na baya tsawo da pixel ɗaya, don haka GIF transparent mai 1000×1000 yana ɗaukar byte 1,743 kawai.

Za a iya rage shi?

Ee, idan ka cire sassan da decoders ke jure rashinsu. Mun gwada kowane nau'i a injunan burauza uku da kuma Pillow, kuma mun rubuta abin da suka zana.

GirmaNau'iChromiumFirefoxWebKitPillow
43Daidaitaccen fayil na wannan shafi.TransparentTransparentTransparentTransparent
42Babu byte na trailer. Decoders suna tsayawa a ƙarshen bayanai ko ta yaya.TransparentTransparentTransparentTransparent
37Babu palette kwata-kwata. Har yanzu sahihi ne: ƙa'idar GIF ta ba decoders damar amfani da nasu palette, kuma index 0 transparent ne ko ta yaya.TransparentTransparentTransparentTransparent
36Babu palette kuma babu trailer.TransparentTransparentTransparentTransparent
35Babu block na transparency: ana zana pixel ɗin da launi na 0 a palette, wato fari.FariFariFariFari
35Tsarin 1987. Ba shi da hanyar sanya launi ya zama transparent.FariFariFariFari
34Akwai block na transparency amma babu matsattsun pixels.TransparentTransparentTransparentKuskure
33Irin na sama, amma ba tare da trailer ba.TransparentTransparentTransparentKuskure
29Babu palette kuma babu transparency. Kowane inji yana zaɓar nasa launi.BaƙiFariTransparentBaƙi
26Hoto da babu matsattsun bayanai ko kaɗan.TransparentTransparentTransparentKuskure
14Header, girman canvas da trailer kawai. Babu hoto a cikinsa.TransparentKuskureTransparentKuskure

Yi amfani da byte 43 idan dole ne ya yi aiki a ko'ina. Byte 37 har yanzu GIF sahihi ne kuma ya zama transparent a duk injunan da muka gwada. Ƙasa da haka, kana dogara ne da sassaucin decoder, kuma fayil mai byte 29 yana nuna yadda injuna ke saɓani.

An duba a 23 Satumba, 2026 da Chromium 153.0.8010.12, Firefox 155.0, WebKit 26.6, Pillow 12.2.0.

Ƙirƙiri na kowane girma

Transparent ko launi guda, daga 1×1 har zuwa 65535×65535. Ana ƙirƙira shi a burauzarka; ba a ɗora komai ba.

Cika
Girman da aka saba

1×1 · Byte 43

Sauke GIF

Bayar da shi daga stack ɗinka

Snippets 173 da ke shirye don gudanarwa. Zaɓi naka: kowanne yana amsawa a path da ka zaɓa da amsar image/gif. Idan ka canza girma ko launi a sama, snippets suna amfani da wannan GIF ɗin.

Elixir, Erlang & Gleam

Express JavaScript

Girkawa
npm i express
Fayil
server.mjs
Gudanar
node server.mjs
import express from 'express';

const GIF = Buffer.from('R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', 'base64');

const app = express();

app.get('/pixel.gif', (req, res) => {
  res.set('Cache-Control', 'no-store');
  res.type('gif').send(GIF);
});

app.listen(8080);

Mun gudanar da wannan snippet kuma mun kwatanta bytes ɗin da ya mayar. Buɗe shafi

Abin da ake amfani da shi

  • Tracking pixels da beacons: server yana rubuta request ɗin a log kuma yana amsawa da mafi ƙanƙantar hoto sahihi.
  • Placeholders don hotunan lazy-load, domin tag ɗin img ya zama sahihi kafin ainihin tushen ya iso.
  • Spacers masu tsayayyen girma a imel na HTML, inda goyon bayan CSS bai cika ba.
  • Gwaje-gwaje da mocks da ke buƙatar hoto na gaske ba tare da haɗa fayil ɗin hoto ba.

Tracking pixels ba su da tabbaci kamar yadda suke gani

Apple Mail yana sauke hotuna na nesa tun kafin a buɗe, ta hanyar proxy, idan Mail Privacy Protection yana kunne, don haka “open” ba zai zama mutum ne ya buɗe ba. Gmail ma yana ɗauko hotuna ta nasa proxy kuma yana ajiye su a cache. Yawancin manhajojin imel suna toshe hotuna na nesa ta tsohuwa. Don nazarin shafi, navigator.sendBeacon() ko amsar 204 No Content sau da yawa ya fi dacewa fiye da hoto.

Tambayoyi

Me ya sa ake ce da shi fanko alhali yana da pixel?
Dole GIF ya kasance yana da aƙalla pixel ɗaya. Wannan 1×1 ne kuma launinsa ɗaya tilo an yi masa alama a matsayin transparent (ana ganin abin da ke bayansa), don haka babu abin da ke bayyana.
Shin fayil mai byte 43 sahihi ne?
Ee. Yana bin ƙa'idar GIF89a daidai, kuma kowane inji a teburin da ke sama yana zana shi a matsayin transparent.
Me ya sa GIF ba PNG ko WebP ba?
Ya fi mafi ƙanƙantar PNG transparent ƙanƙanta, kuma kowace burauza, manhajar imel da library na hotuna daga shekaru 35 da suka gabata za su iya karanta shi.
Data URI zan yi amfani da shi ko fayil?
Data URI yana rage request ɗaya kuma ya dace da placeholders da CSS. Ana buƙatar fayil ko endpoint idan request ɗin kansa shi ne manufar, kamar a tracking pixels.
Wane Content-Type zan aika?
image/gif. Ƙara Cache-Control: no-store idan dole kowane request ya isa server ɗinka.