
რეგრესული 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-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.