შეხედეთ ინსტაგრამის შეკუმშვის ხარისხს

click fraud protection

აღმოაჩინეთ, არის თუ არა Instagram-ის ცუდი შეკუმშვის ხარისხი Android-ისთვის პლატფორმის შეზღუდვის ან Instagram-ის დეველოპერების განზრახ ქმედებების შედეგი.

Instagram-ის აპლიკაცია Android-ისთვის დღესდღეობით ერთ-ერთი ყველაზე პოპულარული სოციალური მედიის პლატფორმა გახდა მსოფლიოში. ერთად მეტი 300 მილიონი ყოველთვიური მომხმარებელი ყველა პლატფორმაზედა 100 მილიონზე მეტი ინდივიდუალური ჩამოტვირთვა Google Playstore-ზე, თქვენ ველით, რომ Facebook-ის სნეპშოტების გაზიარების აპლიკაცია იამაყებს ხარისხით როგორც დიზაინით, ასევე ფუნქციონალობით. სამწუხაროდ, მისი მომხმარებელთა ბაზის დიდი ნაწილისთვის - ანუ Android-ის ინსტაგრამატორებისთვის - Instagram ვერ ახერხებს კარგ საქმეს მხოლოდ იმაში, რაც უნდა გააკეთოს - ლამაზი სურათების გაზიარება.

მიუხედავად იმისა, რომ iOS-ის მომხმარებლებს შეუძლიათ თავიანთი შემოქმედებისა და მომენტების მაღალი ერთგულებით გაზიარება, ანდროიდის მომხმარებლები უკვე წლებია აფიქსირებენ სურათებში უკიდურესი ხარისხის დაკარგვის შესახებ. ერთ-ერთი უძველესი თემა უჩივის ასეთ თავის ტკივილს ნაპოვნია აქ XDA-ზე 2012 წლის სექტემბერში, და თემა აქამდე გადიოდა, რაც მკითხველს არაორდინალური გზებით აწვდიდა ინსტაგრამის ფოტოების სასაცილო განადგურებას. თქვენ ფიქრობთ, რომ ორ წელზე მეტი საჩივრების, ტექნოლოგიური გაუმჯობესების, როგორც პროგრამული უზრუნველყოფის, ისე აპარატურის, ეკონომიკური და ბაზრის ზრდის შემდეგ, Instagram ამ საკითხებს მოაგვარებდა. არის თუ არა ეს რაღაცის დამნაშავე? ან პრობლემის გამომწვევი მიზეზი იმაზე ღრმაა, ვიდრე ჩანს?

პირდაპირი სახე

აქ არის სურათი, რომელიც მე თვითონ გადავიღე. ორიგინალური კადრი იწონის 4.34 მბ და ესროლეს 9.6 MP. იმისათვის, რომ არ გამოვრიცხოთ "Instacrop"-ის შემცირების ნიმუში, რომელიც გასაგებად გაანადგურებს ასეთი მაღალი გარჩევადობის ფაილის დეტალებს, მოგვიანებით მისი ინსტაგრამის მშობლიურ ენაზე შემცირებით. 640x640 პიქსელის გამომავალი, მე დავჭრა ის JPG-ზე 1:1 ასპექტის თანაფარდობით Instagram-ის ატვირთვისთვის, რათა დავინახო შემდგომი დამუშავების ალგორითმის პირდაპირი ეფექტი და მისი შეკუმშვა ამაზე. ფაილი.

მე უბრალოდ ავიღე JPG კვადრატი და გამოვაქვეყნე ის ჩემს ინსტაგრამზე დამატებითი ფილტრების, ეფექტების ან რაიმე მნიშვნელობების შეცვლის გარეშე. თქვენ მოელოდით, რომ გამოსახულება გამოიყურებოდა საკმაოდ ჰგავს იმას, რაც თავდაპირველად იყო ნანახი, მაგრამ შედეგი დამაჯერებელი იყო. შეკუმშვის არტეფაქტები საზღვრებისა და ფერის გრადიენტების ირგვლივ განსაცვიფრებლად შესამჩნევია მოუმზადებელი თვალისთვისაც კი. მიუხედავად იმისა, რომ თავდაპირველი 1:1 ჭრის ფაილის ზომა იყო 1.6 მბ, ახალი ზომის შეცვლილი და შეკუმშული სურათი არის 125 კბ. ეს ნიშნავს, რომ შეკუმშვამ შეამცირა ორიგინალის ფაილის ზომა თითქმის ერთი ფაქტორით 13 - რაც სულაც არ არის ცუდი ზოგიერთ კონტექსტში.

საინტერესოა, რომ Instagram გთავაზობთ "მაღალი ხარისხის გამოსახულების დამუშავებას", რომელიც გამორთულია ნაგულისხმევად, მაგრამ როდესაც ჩართულია, შედეგები ნამდვილად არ გაუმჯობესდება და შეკუმშული ფაილი ზის 129 კბ. აქ მე მოგაწოდებთ იგივე კრეფს და ხედავთ, რომ შეკუმშვა ჯერ კიდევ საკმაოდ ინტენსიურია და გამოსახულების ერთგულება მაინც ახასიათებს უხეში და პიქსელირებული დანაკარგი.

შეკუმშვა

კომპიუტერული ალგორითმები გვთავაზობენ გამოსახულების ზომის შემცირების სხვადასხვა ხერხს სხვადასხვა ტექნიკით, რომლებიც ოპტიმიზაციას უკეთებენ

საჭირო მონაცემების შემდგომი ინტერპრეტაცია და შესაბამისი სურათის ჩვენება შესაბამისი გზით. სურათების მრავალი ფაილის ტიპი მჭიდრო კავშირშია შეკუმშვის ამ მეთოდებთან, რომლებსაც ისინი მხარს უჭერენ ან არ არის მხარდაჭერილი - და სწორედ ამიტომ, ჩვენ ჩვეულებრივ ვხედავთ უკეთეს ხარისხს ზოგიერთ ტიპის სურათზე, ვიდრე სხვები. PNG (პორტატული ქსელის გრაფიკა) ფაილები ჩვეულებრივ გამოიყენება მედიის გასაზიარებლად ერთგულების და სურათის ხარისხის დაკარგვის გარეშე, ფაილის უფრო დიდი ზომის ხარჯზე, ვიდრე სურათები, რომლებიც განიცდიან დაკარგულ შეკუმშვას. GIF არის ძალიან ძველი გამოსახულების ფორმატი, რომელიც ასევე შეკუმშულია უდანაკარგოდ.

ფაილის ზომის შემცირების ან ოპტიმიზაციის ტექნიკას ბევრი პროგრამისტი სწავლობს მათ აკადემიურ საქმიანობაში, განურჩევლად იმ სფეროსა, რომელშიც ისინი განვითარდებიან. სახელები, როგორიცაა დეფლაცია (გამოიყენება PNG) ან ლემპელ-ზივ-ველჩი ალგორითმი (როგორც წესი, გამოიყენება GIF) დღესდღეობით კომპიუტერის მეცნიერების ბევრ კლასში გადის, ბევრი პროგრამისტის ყურში ჟღერს და უფრო ეფექტური შეკუმშვის ტექნიკის შემდგომი განვითარებისა და დოკუმენტაციის შემდეგ, თქვენ მოველით, რომ მილიარდერების პლატფორმა გონივრულად ეფექტურ ალგორითმებს შემოიტანს, რათა გამოიტანოს ძალიან ლამაზი სურათი, ხოლო ტექნიკური მახასიათებლები არ დაბეგვრას მათ სერვერებზე და მომხმარებლისთვის. აპარატურა.

მაგრამ ეს უბრალოდ ასე არ არის. სურათები, რომლებსაც მე და მილიონობით ინსტაგრამის მომხმარებელი ყოველდღიურად ვიღებთ და ვტვირთავთ, პირდაპირ ეწინააღმდეგება ამ საინჟინრო უნარების თხრობას. ტექნოლოგიური სამყაროს სუპერსახელმწიფოები, რომლებიც უნდა დააგროვონ თავიანთი შემოსავლის დიდი ნაწილი პროგრამულ უზრუნველყოფაში ინვესტიციების გამო, რათა უზრუნველყონ საუკეთესო მომხმარებელი გამოცდილება. მაგრამ აქ მაინც რჩება უპასუხო კითხვა: რატომ Android და არა iOS?

VSCO და Android მეხსიერება

მაშინ, როცა პოპულარული ინტერნეტ ფორუმები, როგორიცაა Reddit, ცდილობდნენ გაერკვია მათი ყოველდღიური აღშფოთების მიზეზი, უსამართლობას, როგორც ჩანს, სხვა ლოგიკური საფუძველი არ ჰქონდა. ვიდრე Android-ის აპარატურის შესაძლო ახსნა გამოთვლითი ენერგიის განყოფილებაში არსებითად დაქვეითებული, ან ის ფაქტი, რომ ქვედა დონის Android მოწყობილობები, ეს ზომები უნდა იქნას მიღებული, რათა უზრუნველყოფილიყო მომხმარებლის თანმიმდევრული გამოცდილება მთელ პლატფორმაზე - მიუხედავად იმისა, თუ რამდენს გადაიხდით შენი ტელეფონი. რაც გადიოდა თვეები, ინსტაგრამის ყოველი განახლების შემდეგ ანგარიშები აფიქსირებდა იმავე საკითხს სადაც ეს პრობლემა გახდა აურზაური ფორუმის მომხმარებლებში, რომლებიც მალევე მოჰყვნენ მის ყოველ გამეორებას განაცხადი.

მომხმარებლებმა ასევე შენიშნეს მსგავსი შემთხვევა პოპულარული კამერისა და სურათების რედაქტირების აპლიკაციასთან VSCO Cam. რეკლამირებული "Android ფოტოგრაფიის ახალი სტანდარტი", ზოგიერთმა სწრაფად შეამჩნია, რომ აპლიკაცია ამ პრეტენზიებს არ აკმაყოფილებდა. შესამჩნევი არტეფაქტების ხარისხი და ტიპი ინსტაგრამის მსგავსი იყო, ამიტომ ზოგიერთმა სწრაფად იფიქრა, რომ იყო ხაზი, რომელიც აერთიანებს წერტილებს. აქამდე მხოლოდ ვარაუდები გვქონდა, თუ რა შეიძლება ყოფილიყო ამ პრობლემის მიზეზი. ზოგი პრობლემას პირდაპირ Android-ის ჩაშენებულ ბიტმაპის შერჩევის ალგორითმებს აბრალებდა. თუმცა, როგორც ჩანს, ყველაზე დამაჯერებელი მიზეზი, რომელიც გამოჩნდა, იყო უბრალო ფაქტი, რომ Instagram-ს და შესაძლოა VSCO-ს ჰქონდათ შემცირების ალგორითმის ცუდი განხორციელება, კონკრეტულად Nearest Neighbor resampling. მაგრამ დეველოპერების ოფიციალური სიტყვის გარეშე, სპეკულაცია სრულად ვერ დადასტურდა.

სწორედ მაშინ ვისწავლეთ VSCO-ს ტექნიკური მხარდაჭერა რომ მათი გარჩევადობის და ერთგულების დაკარგვის მიზეზი არ იყო ცუდი პროგრამული უზრუნველყოფის დანერგვა, არამედ მეხსიერების შეზღუდვა Android მოწყობილობებში:

„ანდროიდის მოწყობილობების უმეტესობა საკმაოდ შეზღუდულია მეხსიერებაში, მიუხედავად იმისა, რომ ზოგიერთ მათგანს აქვს რამდენიმე გიგაბაიტზე მეტი მეხსიერება. მაგრამ აპლიკაციებს არ აქვთ უფლება გამოიყენონ ეს ყველაფერი ხელმისაწვდომი მეხსიერების და ამგვარად ჩვენ უნდა დავაკმაყოფილოთ ის, რაც გვეძლევა ანდროიდიდან.”

„დიდი სურათები შეიძლება შემცირდეს 50%-მდე იმპორტის დროს დამოკიდებულია მოწყობილობაზე, რომელზეც იმყოფებით და ხელმისაწვდომი მეხსიერება.

ისინი ასევე ამტკიცებენ, რომ მათი გამოსახულების დამუშავების ტექნიკა ძალიან აზარალებს როგორც მეხსიერებას, ასევე SoC-ს და ეს, Android-ის მეხსიერების შეზღუდვებთან ერთად, სწორედ ამიტომ ვხედავთ ხარისხის ბოსტნეულს, რომელსაც ვერ ვპოულობთ iOS.

Მიხედვით Android-ის დეველოპერების ტრენინგის სტატიები, მკაცრი ლიმიტი დაწესებულია გროვის ზომა თითოეული აპისთვის ფუნქციური მრავალფუნქციური გარემოს შესანარჩუნებლად. ეს დამოკიდებულია იმაზე, თუ რამდენი ოპერატიული მეხსიერება აქვს მოწყობილობას და თუ აპლიკაცია უახლოვდება გროვის სიმძლავრეს, ის ემუქრება RAM-ის ამოწურვის რისკს.

ასე რომ, ერთი შეხედვით, ეს ჩანს რომ VSCO-ს ამბავი დამაჯერებელია, მაგრამ ეს არ ხსნის ზოგიერთ საკითხს, რასაც სკეპტიკოსების მიდგომის მქონე ადამიანები, როგორც ჩანს, ვერ არღვევენ.

შეზღუდვა

ძალიან ზედაპირული შეხედვით, შეგვიძლია დავსვათ ეს კითხვა: თუ სმარტფონი, რომელსაც ჩვეულებრივ აქვს 1 GB-დან 2 GB ოპერატიული მეხსიერება და უახლესი პორტატული პროცესორები ვერ ამუშავებენ სურათს სრული გარჩევადობით, რატომ შეუძლიათ 32MB RAM DSLR კამერებს რომ?

ჩვენ მივმართეთ ჩვენს ერთ-ერთ მაღალ აღიარებულ დეველოპერს, რათა უფრო ძლიერი აზრი შეგვეგროვებინა ამ საკითხთან დაკავშირებით. OmniROM დეველოპერი XpLoDWilD კომენტარი გააკეთა:

„აქ შეზღუდვა უფრო მეტად არის გამოსახულების გამოთვლა ან დამუშავება. GPU ამისთვის უფრო სწრაფია და ამის გაკეთების ყველაზე სწრაფი გზაა სურათის "ატვირთვა" GPU-ში ტექსტურის სახით და დაამუშავეთ - პრობლემა არის ის, რომ თქვენ შეზღუდული ხართ GPU-ს მაქსიმალური ტექსტურის ზომით, რაც ზოგადად არის 4096x4096."

ზოგადად, 8 მეგაპიქსელიანი სურათები არის 3264x2448, საკმარისად მცირე, რომ მოერგოს 12 მეგაპიქსელამდე 4000x3000 საზღვრებს. უახლესი ფლაგმანი და კამერა-ტელეფონის სენსორები შეიძლება აღემატებოდეს 13 მეგაპიქსელს და აქვთ სურათის ზომები მაქსიმალურ GPU-ზე დიდი. ტექსტურის მაქსიმალური ზომა, რაც აუცილებლად საჭიროებს გამოსახულების შემცირებას შეზღუდვის ფარგლებში და მთლიანობაში დაკარგვას დეტალი.

„საკითხი ის არ არის, რომ აპებია შემცირებული ვერსიის ატვირთვა, თუმცა, ეს უფრო აპლიკაციებია სურათის შემცირებული ვერსიის დამუშავებადა ამ დამუშავებული ფაილის ატვირთვა“, - დასძინა მან. ”სავარაუდოდ, დამუშავების დროის კიდევ უფრო შესამცირებლად, მათ ასევე დააყენეს გარჩევადობა კიდევ უფრო დაბალ დონეზე”.

XpLoDWilD ვარაუდობს, რომ ჯარიმა ბალანსი გენერაციის დრო და GPU შეზღუდვა ვიზუალური იქნება, ვიდრე მომხმარებლისთვის სრულად დამუშავებული გადახედვის ჩვენება იმ სურათის, რომელზეც ისინი მუშაობენ რედაქტირების პროცესის დამხმარე იქნება შემცირებული მინიატურა, რომელიც მოთავსდება ეკრანზე (რაღაც 2048x2048-ზე ნაკლები). ეს მინიატურა ზოგადად შეიძლება დამუშავდეს საიმედოდ სწრაფად, მაგრამ მაინც აძლევს მომხმარებელს კარგ შეფასებას, თუ როგორ გამოიყურება სურათი. როდესაც მომხმარებელი დაადასტურებს მის მიერ გაკეთებულ არჩევანს მნიშვნელობის კორექტირებასა და ფილტრის არჩევაზე, სრული გარჩევადობის სურათი იქნება გარდაიქმნება ფონზე - გამოსახულების გაყოფით ესკიზის გარჩევადობის ზომის ბადეში და შემდეგ თითოეული ბლოკის დამუშავებით ცალკე. საბოლოო ნაბიჯი გულისხმობს CPU-ზე საბოლოო გამოსახულების შედგენას თითოეული რეგიონის უკან დაბრუნებით ერთ დიდ, სრული გარჩევადობის ბიტმაპში.

ეს არის სურათის ორიგინალური რეზოლუციით დამუშავების ერთ-ერთი გზა. ეს არის ის, რასაც Instagram, როგორც ჩანს, არ აკეთებს, იმის გათვალისწინებით, რომ გადახედვისას, რომელსაც ხედავთ, დღემდე თქვენ ამუშავებთ სურათს, არ არის ისეთივე საშინელი ხარისხი და არტეფაქტები, როგორც მზა ატვირთვისას სურათი. როგორც ჩანს, გადახედვის სურათი არ განიცდის სასტიკ შეკუმშვას, ამიტომ შეკუმშვა ხდება საბოლოო სურათის დამუშავების მომენტში - რაც გამოსცემს დაბალი ხარისხის სურათს.

ანდროიდის პლატფორმას ნამდვილად არ აქვს პრობლემები მაღალი სრული გარჩევადობით გამოსახულების დამუშავებისა და გაცილებით ნაკლების ატვირთვისას. ტექნიკის მხრივ, უახლეს iPhone-ებს აქვთ ტექსტურის ზომის ლიმიტი 2048-დან 4096-მდე. ასე რომ, ეს, ალბათ, არ არის ტექნიკის შეზღუდვა და ეს არ არის პლატფორმის შეზღუდვა - როგორც ეს შეიძლება და მუშაობდა სხვა დეველოპერების მიერ.

მაგრამ გროვის ზომის ქუდი იყო!

დიახ, მაგრამ არა მთლად. ჯავის გროვაზე გონივრული ლიმიტი არსებობს, მაღალი სიმკვრივის სურათებისთვის საჭირო დამატებითი მეხსიერების გამო. გარკვეული კვლევის შემდეგ ვიპოვე დებატების ეს ფრაგმენტი Google ჯგუფში, რომელიც განიხილავს Android NDK-ს, ან მშობლიური განვითარების ნაკრები, რომელიც დეველოპერებს საშუალებას აძლევს ხელახლა გამოიყენონ C/C++-ში დაწერილი კოდი აპლიკაციებში მისი დანერგვით. Java მშობლიური ინტერფეისი, რაც აპლიკაციის შესრულებას გარკვეულწილად აჩქარებს, რადგან ის პირდაპირ ინტერპრეტაციას ახდენს პროცესორზე, ვირტუალური მანქანის ნაცვლად.

საუბარში ეს შეიძლება იყოს ნაპოვნია აქ, Google-ის ინჟინერი და Android Framework Developer დაიან ჰეკბორნი ასუფთავებს ზოგიერთ მცდარ წარმოდგენას Android-ის მეხსიერების შეზღუდვების შესახებ. იგი აღნიშნავს, რომ „იმის გათვალისწინებით, რომ ეს არის NDK სია, ლიმიტი რეალურად არ არის დაწესებული თქვენზე, რადგან ის მხოლოდ ჯავის გროვაზეა. არ არსებობს ლიმიტი ასიგნებებზე მშობლიურ გროვაში... “. რაც შეეხება RAM-ის გამოყენებას, ის კომენტარს აკეთებს: ”თუ საკმარისი ოპერატიული მეხსიერებაა, მონაცემები ინახება RAM-ში. Თუ არა... კარგი, შენ მაინც გარბიხარ“.

ის ასევე ამბობს, რომ არა მხოლოდ არ არის შეზღუდვა მშობლიური გროვა, მაგრამ არც ერთი არ არსებობს GPU გროვა. ასე რომ, როგორც ჩანს, ნამდვილად არ არსებობს შეზღუდვები "დაწესებული" მთლიანად Android-ის მიერ იმის შესახებ, თუ რამდენი მეხსიერება, ზოგადი დამუშავება ან GPU შეგიძლიათ გამოიყენოთ NDK-ის არსებობის გამო.

მაგრამ მაშინაც კი, ჯავის გროვა საკმარისად დიდი უნდა იყოს ერთი სურათისთვისმონიტორი. 13 მეგაპიქსელიანი სურათი, როგორც არაკომპრესირებული ბიტმაპი (ARGB 8888) დასჭირდება დაახლოებით 50 მბ. ნაგულისხმევი მაქსიმალური გროვის ზომის დიაპაზონი 256 მბ-მდე ან512 მბ დამოკიდებულია Android მოწყობილობაზე და Android ვერსიაზე, რომელიც მუშაობს. Instagram იღებს შესახებ 62 მბ როდესაც უმოქმედოა, და როგორც ჩემი სისტემის მონიტორის გრაფიკიდან ვიმსჯელებთ, RAM-ის გამოყენება იზრდება 13 მეგაპიქსელიანი სურათის აღებისა და დამუშავების დროს, როგორც ჩანს, უმნიშვნელოა და რა თქმა უნდა. არსად არ ახურებს ვითომდა „ანდროიდის მიერ დაწესებულ“ ლიმიტს, რომლის გარშემო მუშაობაც შესაძლებელია, და მისი თავიდან აცილება ან შერბილება შესაძლებელია გარკვეული ალგორითმების გამოყენებით. სხვები.

დასკვნა

როგორც უკვე აღვნიშნეთ, ჩვენ შეიძლება არასოდეს ვიცოდეთ სრული ამბავი იმის შესახებ, თუ რა ხდება ამ აპების კულისებში. მაგრამ მათი შემქმნელების ან მათი აპოლოგეტების პასუხებით გამართლებული არგუმენტები არ ჩანს საფუძვლიანი შემოწმების შემდეგ. პრობლემა აქ, როგორც ჩანს, გამოწვეულია პროგრამული უზრუნველყოფის უღიმღამო დანერგვით, და არა რაიმე შეზღუდვით, რომელსაც Android-ის აპარატურა ან პროგრამული უზრუნველყოფა, როგორც ჩანს, შეუძლია უზრუნველყოს.

ის ფაქტი, რომ არსებობს აპლიკაციები, რომლებიც მუშაობენ შეკუმშვის გარშემო, პლუს დოკუმენტაციის არსებობა და შინაარსი Android-ის შიდა სამუშაოებზე, ამჟამინდელი Android აპარატურა და ექსპერტების მოსაზრება, როგორც ჩანს, მიუთითებს იმ უსამართლობაზე, რომელსაც ანდროიდის მომხმარებლები აწყდებიან მიზანმიმართულად ან, სულ მცირე, აღიარებით. ხსნადი.

ვფიქრობ, დროა Android-ის მომხმარებლებმა მიიღონ არა მხოლოდ სიმართლე, არამედ ის მოპყრობაც, რომელიც მათ იმსახურებენ. მიუხედავად იმისა, რომ ეს შეიძლება იყოს Android მოწყობილობები, მასობრივად, რადგან საშუალო და მედიანა iPhone-ებზე დაბალია, როდესაც საქმე ეხება აპარატურას, არ არსებობს მიზეზი, რომ შეამციროთ სტანდარტები და გააფუჭოთ ყველას მომხმარებლის გამოცდილება ამის გამო. და როდესაც თითოეული დეველოპერი აძლევდა პლატფორმას მეორად ნარჩენებს, მომხმარებლები სულ უფრო მეტად ამახვილებენ ყურადღებას დეველოპერებზე და არა სისტემაზე - როგორც ეს უნდა იყოს.

საკრედიტო PixelPulse გამორჩეული სურათისთვის