Jinsi ubadilishaji wa picha hadi Base64 unavyofanya kazi
Ubadilishaji wote unafanyika kwenye kivinjari chako ukitumia File API na kazi ya ndani ya btoa — hakuna maktaba ya codec inayopakuliwa na hakuna seva inayoona picha. Hapa ni mfumo wote, kutoka mwanzo hadi mwisho:
- Unatupa au kuchagua picha. Kivinjari kinaisoma kama Blob kutoka diski yako ya ndani, bila kunakili baiti kwenye seva kamwe.
- Faili inasomwa katika vipande vya MB 1 na baiti za kila kipande zinaongezwa kwenye mfuatano wa binary. Mgawanyo huu unazuia picha kubwa kuzidisha steki ya simu za JavaScript.
- Mfuatano wa binary unapelekwa kwa btoa, ambayo inabadilisha kila baiti tatu kuwa herufi nne za Base64 zilizochukuliwa kutoka kwa alfabeti ya A–Z, a–z, 0–9, pamoja na /.
- Aina ya MIME ya faili (image/png, image/jpeg, na kadhalika) inasomwa kutoka kwa kitu cha File na kuongezwa kama kiambishi awali cha data:, ikizalisha URI kamili ya data:image/…;base64,….
- Ukurasa unakusanya matokeo manne kutoka URI hiyo — Data URI kamili, Base64 ghafi bila kiambishi awali, tagi ya
tayari kwa kubandika, na kipande cha CSS background-image — kila moja ikiwa na kitufe chake cha kunakili.
Kwa nini kusimba picha kama Data URI?
- Kuweka nembo ndogo au ikoni kama Data URI kunaondoa ombi tofauti la mtandao, hivyo ukurasa au barua pepe inaonyesha fremu yake ya kwanza haraka zaidi kidogo.
- Ukurasa au karatasi ya mitindo yenye picha zilizowekwa ndani ni ya kujitegemea. Inafanya kazi bila mtandao, na unaweza kuihamisha bila kubeba folda ya rasilimali pamoja nayo.
- Wateja wengi wa barua pepe wanazuia picha za mbali kwa chaguo-msingi. Weka nembo kama Base64 na itaonekana mara tu ujumbe ukifunguliwa, bila kupata picha ya mbali.
- Usimbuaji unatokea kabisa kwenye kivinjari chako, hivyo picha nyeti haziwahi kusafirishwa kwenye seva ya tatu. Hii inashughulikia skani za kitambulisho, maandishi ya ndani, na michoro ya siri.
Matumizi ya kawaida ya picha za Base64
Data URI zinaonekana popote picha ni ndogo ya kutosha ambapo ombi tofauti linghali zaidi kuliko uvimbe wa ~33% wa ukubwa unaoongezwa na Base64. Mifumo mitatu inajitokeza mara kwa mara:
- Ikoni za CSS zilizowekwa ndani: sprite au ikoni ya KB 1–2 iliyodondoshwa kwenye karatasi ya mitindo kama background-image: url(data:…) ili kanuni iwe ya kujitegemea kabisa.
- Saini za barua pepe na jarida: nembo iliyowekwa ndani kama
yenye data URI src inaonekana hata wakati mteja anazuia picha za mbali.
- Uwekaji wa ndani wa zana za kujenga: vifurushi kama Webpack na Vite vinaweka rasilimali chini ya kizingiti cha baiti kiotomatiki, na zana hii inakuruhusu kuona jinsi matokeo hayo yanavyoonekana hasa.
Picha ya Base64 inaonekanaje?
Chukua PNG ndogo sana ya 1×1 yenye uwazi. Baiti zake ghafi ni baiti 67 tu, lakini ikisimbwa inakuwa mfuatano iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+M8AAAMEAYC0aGgAAAAASUVORK5CYII=, na Data URI kamili ni data:image/png;base64,iVBORw0KGgo…. Angalia kwamba fomu iliyosimbwa ni kubwa zaidi kwa karibu theluthi moja kuliko asili. Hiyo ndiyo malipo ya kufanya data ya binary iwe salama kuwekwa moja kwa moja kwenye maandishi.
Je, picha yangu inapakiwa popote?
Hapana. Ubadilishaji unatumia File API ya kivinjari na kazi ya asili ya btoa kusimba picha kabisa kwenye kifaa chako. Unaweza kuthibitisha mwenyewe: fungua zana za msanidi wa kivinjari chako, nenda kwenye paneli ya Mtandao, na ubadilishe picha — maombi pekee utakayoyaona ni mzigo wa ukurasa na matangazo yoyote. Hakuna kitu chenye umbo la picha kinachotumwa kwa seva, na hii ndiyo inayofanya hii kuwa salama kwa skani za kitambulisho, nyaraka za ndani, na maandishi ya siri.
Kwa nini matokeo ya Base64 ni makubwa zaidi kuliko picha yangu asili?
Base64 inawakilisha kila baiti tatu za data ya binary na herufi nne za ASCII, hivyo maandishi yaliyosimbwa ni makubwa zaidi kwa karibu 33% kuliko faili ya chanzo. Kiashiria cha ukubwa wa Data URI kwenye ukurasa huu kinaonyesha urefu uliozidishwa hasa. Hiyo ndiyo sababu Data URI zina maana tu kwa picha ndogo — kuweka ndani picha ya MB 2 kungevimba HTML au CSS yako zaidi sana kuliko ombi tofauti lingelighali. Kama sheria ya kidole gumba, weka ndani picha chini ya KB 4 na unganisha kwa kila kitu kikubwa zaidi.
Ni muundo gani wa picha unaweza kubadilishwa?
Muundo wowote ambao kivinjari chako unautambua kama picha unafanya kazi, kwa sababu zana inasoma baiti ghafi badala ya kusimbua picha. Hiyo inajumuisha PNG, JPEG, GIF, WebP, SVG, na BMP. Aina ya MIME inasomwa moja kwa moja kutoka kwa faili, hivyo kiambishi awali cha data: daima kinalingana na muundo halisi — JPEG inazalisha data:image/jpeg na SVG inazalisha data:image/svg+xml. SVG inastahili kumbuka maalum: tayari ni maandishi, hivyo kwa SVG Data URI iliyosimbwa kwa URL mara nyingi ni ndogo zaidi kuliko toleo la Base64, ingawa zana hii inatoa fomu ya Base64 kwa uthabiti.
Tupa picha, nakili Data URI au kipande unachohitaji, na kibandike kwenye HTML, CSS, au kiolezo cha barua pepe yako. Kila baiti inabaki kwenye kifaa chako. Hakuna kupakia, hakuna akaunti, hakuna safari ya seva.