
Ռեգրեսիվ JPEG-ներ. ինչպես է ամբողջ տեսանյութը թաքնվում մեկ պատկերի ֆայլում
Բլոգային գրառումը ցույց է տալիս, թե ինչպես JPEG-ի պրոգրեսիվ սկաները շղթայելով՝ մեկ պատկերի ֆայլը ներբեռնման ընթացքում փոխում է նկարները կամ կարճ տեսանյութ նվագարկում։ Գործնական կիրառություն չունի։
maurycyz.com-ում հրապարակված գրառումը ցույց է տալիս, թե ինչպես կարելի է JPEG ձևաչափի պրոգրեսիվ ռեժիմը — այն հատկությունը, որի շնորհիվ մասամբ ներբեռնված պատկերը երևում է որպես ցածր թույլատրելիության էսքիզ, այլ ոչ թե կիսատ կտրված հատված — վերածել ամբողջ կարճ տեսանյութ կամ մի քանի տարբեր նկար մեկ ֆայլում պահելու եղանակի։
Ինչպես են աշխատում պրոգրեսիվ սկաները
Պրոգրեսիվ JPEG-ը սեղմված տվյալները բաժանում է մի շարք սկաների, որոնցից յուրաքանչյուրն ունի իր վերնագիրը։ Առաջին սկանը պարունակում է երեք գունային ալիքների միայն ամենացածր (DC) Ֆուրիեի բաղադրիչը, և դա բավարար է պատկերի շատ ցածր թույլատրելիության էսքիզ նկարելու համար։ Հաջորդ ութ սկաները լրացնում են մնացածը՝ սկզբում պայծառության լրացուցիչ մանրամասները, ապա ցածր ճշգրտությամբ ամբողջական տվյալները, վերջում՝ վերջին բացակայող բիթերը։ Գույնը պահվում է YCbCr տարածությունում կիսով չափ թույլատրելիությամբ, ուստի պատկերի գունային ամբողջ տվյալը կշռում է մոտավորապես այնքան, որքան միայն պայծառության տվյալը։
Նկարի վերագրման հնարքը ներբեռնման ընթացքում
Քանի որ յուրաքանչյուր սկան ինքն է հայտարարում իր սպեկտրալ միջակայքը, հնարավոր է կառուցել այնպիսի JPEG, որի հետագա սկաները վերագրում են արդեն գծված տվյալները։ Եղանակը կոպիտ է. պետք է իրար կցել միևնույն թույլատրելիության մի քանի JPEG և ջնջել պատկերի սկզբի, կադրի սկզբի և պատկերի ավարտի մարկերները. հեղինակը դա արել է կարճ C ծրագրով։ Դանդաղ կապի պայմաններում նման ֆայլը ներբեռնման ընթացքում աչքի առաջ փոխակերպվում է մի նկարից մյուսը։ Սակայն ապակոդավորիչների մեծ մասը դադարում է որոշակի թվով սկաներից հետո՝ հավանաբար որպես դեկոմպրեսիայի ռումբի տիպի հարձակումներից պաշտպանություն, և դրա պատճառով միամիտ մոտեցումը սահմանափակվում է մոտավորապես ինը կադրով։
Իննսուն կադր մեկ ֆայլում
Ավելի շատ կադրեր տեղավորելու համար յուրաքանչյուր կադր պետք է լինի հնարավորինս փոքր։ Պրոգրեսիվ սկանը չի կարող միաժամանակ պարունակել AC (զրոյից բարձր) և DC տվյալներ, իսկ բազային ռեժիմը դադարում է առաջին սկանից հետո, ուստի ամենափոքր թույլատրելի պրոգրեսիվ JPEG-ը մեկ DC սկան է։ Քանի որ ձևափոխությունը աշխատում է 16×16 բլոկների վրա, նման կադրը միագույն չէ. այն կրկնվում է սկզբնական թույլատրելիության տասնվեցերորդ մասով։ Chrome-ը հանձնվում է մոտավորապես իննսուն այդպիսի կադրից հետո, Firefox-ը՝ ավելի համբերատար։ Կադրերը լիովին համապատասխանում են ստանդարտին և ստեղծվում են jpegtran գործիքով՝ սկաների ֆայլ հայտարարելով։
Գործնական կիրառություն չկա. JPEG-ը ժամանակի մասին տեղեկություն չի պահում, ուստի նվագարկման արագությունը ամբողջովին կախված է ցանցի ուշացումից։ Հեղինակի խոսքով՝ տեխնիկան հիմնականում պիտանի է անսովոր rickroll-ների համար, և նա հղում է տալիս նմանատիպ փորձերին՝ HTML տեսանյութ, որը կառուցված է միայն dialog տարրերից, և ինտերակտիվ մի էջանոց հավելված՝ առանց CSS-ի ու JavaScript-ի։ Կադրերը միավորող ծրագիրը հրապարակված է գրառման կողքին։
SiTech — AI-ով հզորացված վեբ մշակում
Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։