emptygif
மொழி: தமிழ்

மிகச் சிறிய டிரான்ஸ்பரன்ட் GIF 43 பைட்கள் மட்டுமே.

முழு ஃபைலும் இவ்வளவுதான். ஏதேனும் ஒரு பைட்டைத் தேர்ந்தெடுத்து அது என்ன செய்கிறது என்று பாருங்கள், பிறகு ஃபைலை நகலெடுக்கலாம், டவுன்லோட் செய்யலாம், ஹாட்லிங்க் செய்யலாம், அல்லது உங்கள் சொந்தக் கோடிலிருந்து சர்வ் செய்யலாம்.

43 பைட் GIF, பெரிதாக்கிக் காட்டப்பட்டது: ஒரு டிரான்ஸ்பரன்ட் பிக்சல்
0000
0010
0020
1×1.gif டவுன்லோட்

R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

ஒவ்வொரு பைட்டும் என்ன செய்கிறது

GIF என்பது பிளாக்குகளின் வரிசை. இதில் ஏழு பிளாக்குகள் உள்ளன, இந்தப் பக்கத்தில் உள்ள ஒவ்வொரு நிறமும் அவற்றில் ஏதேனும் ஒன்றைச் சேர்ந்தது. படிக்க ஒரு பைட்டையோ பிளாக்கையோ தேர்ந்தெடுங்கள். எண்கள் little-endian முறையில் சேமிக்கப்படுகின்றன: லோ பைட் முதலில் வரும், எனவே 01 00 என்றால் 1.

பைட்கள்ஃபீல்டுபொருள்
ஹெடர் இது ஒரு GIF என்றும், ஃபார்மேட்டின் எந்த வெர்ஷனை எதிர்பார்க்க வேண்டும் என்றும் டீகோடருக்குச் சொல்கிறது.
47 49 46சிக்னேச்சர்ASCII எழுத்துகள் “GIF”. ஒவ்வொரு GIF ஃபைலும் இவற்றுடன்தான் தொடங்குகிறது.
38 39 61வெர்ஷன்“89a”. டிரான்ஸ்பரன்சிக்கு 89a தேவை; 87a இல் கிராஃபிக் கண்ட்ரோல் எக்ஸ்டென்ஷன் இல்லை.
லாஜிக்கல் ஸ்கிரீன் டிஸ்கிரிப்டர் கேன்வாஸின் அளவு, அதன் கலர் டேபிள் எப்படி அமைக்கப்பட்டுள்ளது என்பது.
01 00கேன்வாஸ் அகலம்1 px.
01 00கேன்வாஸ் உயரம்1 px.
80பேக்டு ஃப்ளாக்குகள்நான்கு செட்டிங்குகள் ஒரே பைட்டில் அடக்கப்பட்டுள்ளன. மேல் பிட், அடுத்து குளோபல் கலர் டேபிள் வருகிறது என்று சொல்கிறது; கடைசி மூன்று பிட்கள் அதன் அளவைத் தருகின்றன.
00பேக்கிரவுண்ட் கலர் இண்டெக்ஸ்பேலட் என்ட்ரி 0. பிரவுசர்கள் இதைப் புறக்கணித்து, இமேஜுக்குப் பின்னால் உள்ளதையே காட்டுகின்றன.
00பிக்சல் ஆஸ்பெக்ட் ரேஷியோ0 என்றால் சதுர பிக்சல்கள், எந்தத் திருத்தமும் இல்லை.
குளோபல் கலர் டேபிள் பேலட். பிக்சல்கள் நிறத்தைச் சேமிப்பதில்லை, இந்தப் பட்டியலில் உள்ள ஒரு இண்டெக்ஸைச் சேமிக்கின்றன.
FF FF FFபேலட் என்ட்ரிசிவப்பு, பச்சை, நீலம், ஒவ்வொன்றும் ஒரு பைட்: #ffffff. ஒரு GIF இல் இருக்கக்கூடிய மிகச் சிறிய டேபிள் இரண்டு என்ட்ரிகள் கொண்டது.
00 00 00பேலட் என்ட்ரிசிவப்பு, பச்சை, நீலம், ஒவ்வொன்றும் ஒரு பைட்: #000000. ஒரு GIF இல் இருக்கக்கூடிய மிகச் சிறிய டேபிள் இரண்டு என்ட்ரிகள் கொண்டது.
கிராஃபிக் கண்ட்ரோல் எக்ஸ்டென்ஷன் GIF89a இல் சேர்க்கப்பட்ட, கட்டாயமில்லாத பிளாக். இங்கே இது பேலட் என்ட்ரி 0-ஐ டிரான்ஸ்பரன்ட் ஆக்குகிறது.
21எக்ஸ்டென்ஷன் இன்ட்ரொட்யூசர்0x21 (“!”) ஒரு எக்ஸ்டென்ஷன் பிளாக் வருவதை அறிவிக்கிறது.
F9கிராஃபிக் கண்ட்ரோல் லேபிள்இந்த எக்ஸ்டென்ஷன் ஒரு கிராஃபிக் கண்ட்ரோல் எக்ஸ்டென்ஷன் என்று 0xF9 சொல்கிறது.
04பிளாக் அளவுஅடுத்து 4 பைட் செட்டிங்குகள் வருகின்றன.
01பேக்டு ஃப்ளாக்குகள்மிகக் கீழ் பிட் டிரான்ஸ்பரன்சி ஃப்ளாக். அது ஆன் ஆக உள்ளது, எனவே கீழே உள்ள டிரான்ஸ்பரன்ட் இண்டெக்ஸ் பயன்படுத்தப்படுகிறது.
00 00டிலேவிநாடியின் நூறில் ஒரு பங்கு அலகுகளில் 0. இது அனிமேஷன்களுக்கு மட்டுமே முக்கியம்.
00டிரான்ஸ்பரன்ட் கலர் இண்டெக்ஸ்பேலட் என்ட்ரி 0 முழுமையாக டிரான்ஸ்பரன்ட் ஆக வரையப்படுகிறது.
00பிளாக் டெர்மினேட்டர்பிளாக்கை மூடும், பூஜ்ஜிய நீளம் கொண்ட சப்-பிளாக்.
இமேஜ் டிஸ்கிரிப்டர் இமேஜ் கேன்வாஸில் எங்கே இருக்கிறது, அது எவ்வளவு பெரியது.
2Cஇமேஜ் செப்பரேட்டர்0x2C (“,”) ஒரு இமேஜைத் தொடங்குகிறது.
00 00இடதுஇமேஜ் கேன்வாஸின் இடது விளிம்பிலிருந்து 0 px தொலைவில் தொடங்குகிறது.
00 00மேல்இமேஜ் கேன்வாஸின் மேல் விளிம்பிலிருந்து 0 px தொலைவில் தொடங்குகிறது.
01 00இமேஜ் அகலம்1 px.
01 00இமேஜ் உயரம்1 px.
00பேக்டு ஃப்ளாக்குகள்லோக்கல் கலர் டேபிள் இல்லை, இன்டர்லேஸ்டு இல்லை. இமேஜ் குளோபல் பேலட்டைப் பயன்படுத்துகிறது.
இமேஜ் டேட்டா பிக்சல்கள், LZW மூலம் கம்ப்ரஸ் செய்யப்பட்டு அதிகபட்சம் 255 பைட்கள் கொண்ட சப்-பிளாக்குகளாகப் பிரிக்கப்பட்டவை.
02LZW மினிமம் கோட் அளவு2, எனவே கம்ப்ரஸ் செய்யப்பட்ட கோடுகள் 3 பிட் அகலத்தில் தொடங்குகின்றன.
02சப்-பிளாக் அளவுஅடுத்து 2 பைட் கம்ப்ரஸ் செய்யப்பட்ட டேட்டா வருகிறது.
44 01கம்ப்ரஸ் செய்யப்பட்ட பிக்சல்கள்மிகக் கீழ் பிட்டிலிருந்து மேல்நோக்கி பேக் செய்யப்பட்ட LZW கோடுகள். அவை எப்படி டீகோட் ஆகின்றன என்பதைக் கீழே பாருங்கள்.
00பிளாக் டெர்மினேட்டர்பிளாக்கை மூடும், பூஜ்ஜிய நீளம் கொண்ட சப்-பிளாக்.
டிரெய்லர் ஃபைலின் முடிவைக் குறிக்கும் ஒரு பைட்.
3Bடிரெய்லர்0x3B (“;”) ஃபைலை முடிக்கிறது.

பேக்டு பைட்களுக்குள்

மூன்று பைட்கள் ஒவ்வொன்றிலும் பல சிறிய செட்டிங்குகள் உள்ளன. பிட் 7 மிக இடதுபுறம் உள்ளது.

லாஜிக்கல் ஸ்கிரீன் டிஸ்கிரிப்டர் 0x80
1குளோபல் கலர் டேபிள் உள்ளது
000கலர் ரெசல்யூஷன்
0முக்கியத்துவப்படி சார்ட் செய்யப்பட்ட பேலட்
000டேபிள் அளவு: 2^(n+1) என்ட்ரிகள்
கிராஃபிக் கண்ட்ரோல் எக்ஸ்டென்ஷன் 0x01
000ரிசர்வ்டு
000டிஸ்போசல் மெத்தட்
0யூசர் இன்புட்டுக்குக் காத்திரு
1டிரான்ஸ்பரன்சி ஆன்
இமேஜ் டிஸ்கிரிப்டர் 0x00
0லோக்கல் கலர் டேபிள் உள்ளது
0இன்டர்லேஸ்டு
0முக்கியத்துவப்படி சார்ட் செய்யப்பட்ட பேலட்
00ரிசர்வ்டு
000லோக்கல் டேபிள் அளவு

இரண்டு பைட்களில் ஒரு பிக்சல் எப்படி அடங்குகிறது

மினிமம் கோட் அளவு 2 ஆக இருக்கும்போது டீகோடர் 3-பிட் கோடுகளைப் படிக்கிறது. கோட் 4 டேபிளை கிளியர் செய்கிறது, கோட் 5 இமேஜை முடிக்கிறது, 0 முதல் 3 வரையிலான கோடுகள் பேலட் என்ட்ரிகள். 44 01 பைட்கள் மிகக் கீழ் பிட்டிலிருந்து மேல்நோக்கிப் படிக்கப்படுகின்றன:

0x44 010001000x01 00000001

  1. 001100 = 4கிளியர்: புதிய டேபிளுடன் தொடக்கம்
  2. 000000 = 0பிக்சல்: பேலட் என்ட்ரி 0
  3. 101101 = 5இமேஜின் முடிவு
  4. 0000000 பயன்படுத்தப்படாத பேடிங் பிட்கள்

பெரிய இமேஜ்களும் இதே உத்தியைப் பயன்படுத்துகின்றன: ஒவ்வொரு புதிய கோடும் முந்தையதை விட ஒரு பிக்சல் நீளமான ரன்னைக் குறிக்கிறது, எனவே 1000×1000 டிரான்ஸ்பரன்ட் GIF வெறும் 1,743 பைட்கள்தான்.

இதை இன்னும் சிறியதாக்க முடியுமா?

முடியும், டீகோடர்கள் இல்லாமலும் சமாளித்துக்கொள்ளும் பகுதிகளை நீக்கினால். ஒவ்வொரு வேரியன்டையும் மூன்று பிரவுசர் இன்ஜின்களிலும் Pillow இலும் திறந்து, அவை என்ன வரைந்தன என்பதைப் பதிவு செய்தோம்.

அளவுவேரியன்ட்ChromiumFirefoxWebKitPillow
43இந்தப் பக்கத்தின் ஸ்டாண்டர்டு ஃபைல்.டிரான்ஸ்பரன்ட்டிரான்ஸ்பரன்ட்டிரான்ஸ்பரன்ட்டிரான்ஸ்பரன்ட்
42டிரெய்லர் பைட் இல்லை. டேட்டா முடிந்ததும் டீகோடர்கள் எப்படியும் நின்றுவிடுகின்றன.டிரான்ஸ்பரன்ட்டிரான்ஸ்பரன்ட்டிரான்ஸ்பரன்ட்டிரான்ஸ்பரன்ட்
37பேலட்டே இல்லை. இருந்தும் செல்லுபடியானது: டீகோடர்கள் தங்கள் சொந்த பேலட்டைப் பயன்படுத்த ஸ்பெசிஃபிகேஷன் அனுமதிக்கிறது, இண்டெக்ஸ் 0 எப்படியும் டிரான்ஸ்பரன்ட்.டிரான்ஸ்பரன்ட்டிரான்ஸ்பரன்ட்டிரான்ஸ்பரன்ட்டிரான்ஸ்பரன்ட்
36பேலட்டும் இல்லை, டிரெய்லரும் இல்லை.டிரான்ஸ்பரன்ட்டிரான்ஸ்பரன்ட்டிரான்ஸ்பரன்ட்டிரான்ஸ்பரன்ட்
35டிரான்ஸ்பரன்சி பிளாக் இல்லை: பிக்சல் பேலட் கலர் 0, அதாவது வெள்ளை நிறத்தில் வரையப்படுகிறது.வெள்ளைவெள்ளைவெள்ளைவெள்ளை
351987 ஃபார்மேட். இதில் ஒரு நிறத்தை டிரான்ஸ்பரன்ட் என்று குறிக்க வழியே இல்லை.வெள்ளைவெள்ளைவெள்ளைவெள்ளை
34டிரான்ஸ்பரன்சி பிளாக் உள்ளது, ஆனால் கம்ப்ரஸ் செய்யப்பட்ட பிக்சல்கள் இல்லை.டிரான்ஸ்பரன்ட்டிரான்ஸ்பரன்ட்டிரான்ஸ்பரன்ட்எரர்
33அதேதான், டிரெய்லர் இல்லாமல்.டிரான்ஸ்பரன்ட்டிரான்ஸ்பரன்ட்டிரான்ஸ்பரன்ட்எரர்
29பேலட்டும் இல்லை, டிரான்ஸ்பரன்சியும் இல்லை. ஒவ்வொரு இன்ஜினும் தனக்கென ஒரு நிறத்தைத் தேர்ந்தெடுக்கிறது.கருப்புவெள்ளைடிரான்ஸ்பரன்ட்கருப்பு
26கம்ப்ரஸ் செய்யப்பட்ட டேட்டாவே இல்லாத ஒரு இமேஜ்.டிரான்ஸ்பரன்ட்டிரான்ஸ்பரன்ட்டிரான்ஸ்பரன்ட்எரர்
14ஹெடர், கேன்வாஸ் அளவு, டிரெய்லர் மட்டுமே. இதில் இமேஜ் எதுவும் இல்லை.டிரான்ஸ்பரன்ட்எரர்டிரான்ஸ்பரன்ட்எரர்

எல்லா இடத்திலும் கண்டிப்பாக வேலை செய்ய வேண்டுமென்றால் 43 பைட் ஃபைலைப் பயன்படுத்துங்கள். 37 பைட் ஃபைலும் செல்லுபடியான GIF தான், நாங்கள் சோதித்த ஒவ்வொரு இன்ஜினிலும் டிரான்ஸ்பரன்ட் ஆகத் தெரிந்தது. அதைவிடச் சிறியவை டீகோடரின் தாராளத்தைச் சார்ந்திருக்கின்றன; இன்ஜின்கள் எப்படி முரண்படுகின்றன என்பதை 29 பைட் ஃபைல் காட்டுகிறது.

23 செப்டம்பர், 2026 அன்று Chromium 153.0.8010.12, Firefox 155.0, WebKit 26.6, Pillow 12.2.0 மூலம் சரிபார்க்கப்பட்டது.

எந்த அளவிலும் உருவாக்குங்கள்

டிரான்ஸ்பரன்ட் அல்லது ஒரே நிறத்தில், 1×1 முதல் 65535×65535 வரை. இது உங்கள் பிரவுசரிலேயே உருவாகிறது; எதுவும் அப்லோட் ஆகாது.

ஃபில்
பொதுவான அளவுகள்

1×1 · 43 பைட்கள்

GIF டவுன்லோட்

உங்கள் ஸ்டாக்கிலிருந்து சர்வ் செய்யுங்கள்

ரன் செய்யத் தயாரான 173 ஸ்னிப்பெட்டுகள். உங்களுடையதைத் தேர்ந்தெடுங்கள்: ஒவ்வொன்றும் நீங்கள் தேர்ந்தெடுக்கும் பாத்தில் image/gif ரெஸ்பான்ஸ் தருகிறது. மேலே அளவையோ நிறத்தையோ மாற்றியிருந்தால், ஸ்னிப்பெட்டுகள் அந்த GIF-ஐயே பயன்படுத்துகின்றன.

Elixir, Erlang & Gleam

Express JavaScript

இன்ஸ்டால்
npm i express
ஃபைல்
server.mjs
ரன்
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);

இந்த ஸ்னிப்பெட்டை ரன் செய்து, அது திருப்பித் தந்த பைட்களை ஒப்பிட்டுப் பார்த்தோம். பக்கத்தைத் திற

இது எதற்குப் பயன்படுகிறது

  • டிராக்கிங் பிக்சல்கள், பீக்கன்கள்: சர்வர் ரெக்வெஸ்ட்டை லாக் செய்து, மிகச் சிறிய செல்லுபடியான இமேஜுடன் பதிலளிக்கிறது.
  • lazy-load ஆகும் இமேஜ்களுக்கான ப்ளேஸ்ஹோல்டர்கள், உண்மையான சோர்ஸ் வருவதற்கு முன்பே img டேக் செல்லுபடியாக இருக்க.
  • HTML ஈமெயிலில் நிலையான அளவு ஸ்பேசர்கள், அங்கே CSS சப்போர்ட் முழுமையாக இல்லை.
  • இமேஜ் ஃபைலைக் கூடவே வைத்திருக்காமல், உண்மையான இமேஜ் தேவைப்படும் டெஸ்ட்கள், மாக்குகள்.

டிராக்கிங் பிக்சல்கள் தோன்றும் அளவுக்கு நம்பகமானவை அல்ல

Mail Privacy Protection ஆன் ஆக இருக்கும்போது Apple Mail ரிமோட் இமேஜ்களை ப்ராக்ஸி வழியாக முன்கூட்டியே லோட் செய்கிறது, எனவே ஒரு “open” உண்மையில் எந்த மனிதராலும் செய்யப்படாமல் இருக்கலாம். Gmail உம் தன் சொந்த ப்ராக்ஸி வழியாக இமேஜ்களை ஃபெட்ச் செய்து கேஷ் செய்கிறது. பல கிளையன்ட்கள் இயல்பாகவே ரிமோட் இமேஜ்களை பிளாக் செய்கின்றன. பேஜ் அனலிட்டிக்ஸுக்கு இமேஜை விட navigator.sendBeacon() அல்லது 204 No Content ரெஸ்பான்ஸ் பெரும்பாலும் சிறப்பாகப் பொருந்தும்.

கேள்விகள்

ஒரு பிக்சல் இருந்தும் இதை ஏன் empty என்கிறார்கள்?
ஒரு GIF இல் குறைந்தது ஒரு பிக்சலாவது இருக்க வேண்டும். இது 1×1, இதன் ஒரே நிறம் டிரான்ஸ்பரன்ட் எனக் குறிக்கப்பட்டுள்ளது, அதனால் எதுவும் தெரிவதில்லை.
43 பைட் ஃபைல் செல்லுபடியானதா?
ஆம். இது GIF89a ஸ்பெசிஃபிகேஷனைத் துல்லியமாகப் பின்பற்றுகிறது, மேலே உள்ள டேபிளில் உள்ள ஒவ்வொரு இன்ஜினும் இதை டிரான்ஸ்பரன்ட் ஆக வரைகிறது.
PNG அல்லது WebP க்குப் பதிலாக GIF ஏன்?
இது மிகச் சிறிய டிரான்ஸ்பரன்ட் PNG ஐ விடவும் சிறியது, கடந்த 35 ஆண்டுகளின் ஒவ்வொரு பிரவுசரும், ஈமெயில் கிளையன்ட்டும், இமேஜ் லைப்ரரியும் இதைப் படிக்க முடியும்.
data URI பயன்படுத்த வேண்டுமா, ஃபைலா?
data URI ஒரு ரெக்வெஸ்ட்டை மிச்சப்படுத்துகிறது, ப்ளேஸ்ஹோல்டர்களுக்கும் CSS க்கும் ஏற்றது. டிராக்கிங் பிக்சல்களைப் போல ரெக்வெஸ்ட்டே நோக்கமாக இருக்கும்போது ஃபைல் அல்லது endpoint தேவை.
எந்த Content-Type அனுப்ப வேண்டும்?
image/gif. ஒவ்வொரு ரெக்வெஸ்ட்டும் உங்கள் சர்வரை அடைய வேண்டுமென்றால் Cache-Control: no-store சேர்க்கவும்.