আইফোন বিকাশে কখন পিএনজি বা জেপিজি ব্যবহার করবেন?


98

আমার একটি অ্যাপ্লিকেশন রয়েছে যা একটি স্লাইডশোতে একগুচ্ছ চিত্র প্রদর্শন করবে। এই চিত্রগুলি বান্ডেলের অংশ হবে, এইভাবে অ্যাপ্লিকেশন দিয়ে বিতরণ করা হবে।

সমস্ত চিত্র ফটোগ্রাফ বা ফটোগ্রাফিক, ইত্যাদি।

আমি পড়েছি যে চিত্রের ফর্ম্যাট হিসাবে পিএনজি ব্যবহার করা বেশি পছন্দ করা হয়েছে, তবে জেপিজি সংস্করণটি আরও ছোট হবে বলে আমি বরং এটি ব্যবহার করব।

কোন দিকনির্দেশ আছে কোন ফর্ম্যাটটি ব্যবহার করতে হবে এবং কোন ক্ষেত্রে?


আমি যুক্ত করতে চেয়েছিলাম যে ইমেজগুলি ইতোমধ্যে জেপিজি ফর্ম্যাটে রয়েছে যদি এতে কোনও পার্থক্য আসে।
ম্যাভেরিক

উত্তর:


141

পিএনজি এর পিক্সেল নিখুঁত (অ-ক্ষতিবিহীন), এবং এটি প্রদর্শনের জন্য খুব কম অতিরিক্ত সিপিইউ শক্তি প্রয়োজন। তবে বড় আকারের পিএনজিগুলি স্ট্রেস থেকে আরও সংকুচিত চিত্রের ফর্ম্যাটের চেয়ে বেশি সময় নিতে পারে এবং এটি প্রদর্শন করতে ধীর হতে পারে।

জেপিজিগুলি সঞ্চয় করার জন্য ছোট, তবে ক্ষতিকারক (পরিমাণটি সংক্ষেপণ স্তরের উপর নির্ভর করে), এবং তাদের প্রদর্শন করতে আরও জটিল ডিকোডিং অ্যালগরিদম প্রয়োজন। তবে আদর্শ সংকোচনের এবং চিত্রের গুণমানগুলি সাধারণত ফটোগুলির জন্য যথেষ্ট যথেষ্ট।

ফটো এবং বড় কিছু, এবং পিএনজি এর ছোট এবং / বা "পিক্সেল পারফেক্ট" (উদাহরণস্বরূপ ছোট আইকন) প্রদর্শন করার জন্য বা সংযুক্ত স্বচ্ছ ওভারলে ইত্যাদির অংশ হিসাবে জেপিজি ব্যবহার করুন


4
আমি এখনও জেপিগ বনাম পিএনজি বনাম আইপিএনজি ডিকোড পারফরম্যান্সের কোনও ডেটা দেখতে পাইনি। কখনও কখনও I / O প্রয়োজনীয় হ্রাসের কারণে আরও সংকুচিত ফর্ম্যাটটি আরও ভাল হয়; আমি নিশ্চিত নই যে আইফোনের ফ্ল্যাশ ড্রাইভটি কত গতিযুক্ত। এবং আমি অবশ্যই বলব না যে পিএনজি ডিকম্প্রেশনটির জন্য "খুব অল্প" শক্তি প্রয়োজন; অন্যান্য.আর্টওয়ার্ক ফাইলটি কাঁচা বিটম্যাপ ডেটা হিসাবে উপস্থিত বলে মনে হয় সম্ভবত পিএনজি ডিকম্প্রেশনটির সিপিইউ / মেমরির ওভারহেড সাধারণভাবে ব্যবহৃত ইউআই উপাদানগুলির জন্য খুব বেশি।
টিসি।

4
আমার বর্তমান প্রকল্পে, স্বচ্ছতার প্রয়োজনীয়তার কারণে আমাদের কাছে খুব বড় png ফাইল রয়েছে। ডিসপ্লে আইও একটি জেপিইগ ডিকোডিংয়ের জন্য ব্যয় করা সময়কে ছাড়িয়ে যায়। মনে রাখবেন পিএনজিগুলি কেবল একটি আলাদা অ্যালগরিদম ব্যবহার করে সংকুচিত হয়।
জন

4
চিত্রিত পারফরম্যান্সকে সর্বাধিক করে তোলার চেষ্টা করার জন্য আমি একটি পরিপূরক টিপ যুক্ত করব Fig যদি আপনার জেপিজি ভালভাবে সংকুচিত থাকে তবে আপনি কাঁচা জেপিজি ডেটা এনএসডাটা অবজেক্টগুলিতে আগাম লোড করতে পারেন (সম্ভবত কোনও অ্যারে বা অভিধানে) এবং ইউপিআইএমজি ব্যবহার করে জেপিজি তৈরি করতে পারেন: চিত্র থেকে যখন আপনি প্রদর্শন করতে চান। জেপিজি ডেটা বিটম্যাপ চিত্রের ডেটার তুলনায় 10-100x ছোট হতে পারে তবে এটি আপনাকে (তুলনামূলক ধীর) আইও অংশটি প্রথম দিক থেকে সরিয়ে আনে। আপনি এইভাবে কতটা ডেটা ক্যাশে / প্রিলোড করেন সে সম্পর্কে অবশ্যই সাবধানতা অবলম্বন করুন।
নাইজেল ফ্ল্যাক

4
সংকলনের সময়ে আমি কিছু তথ্য পেয়েছি: cocoanetics.com/2012/09/… মনে হয়, পিএনজি ব্যবহার করা জেপিজির চেয়ে দ্রুত নয়;)
ম্যাকিয়েজ কোজিł

20

অ্যাপল আপনার আইফোন অ্যাপ্লিকেশন বান্ডেলে অন্তর্ভুক্ত পিএনজি চিত্রগুলি অনুকূল করে। আসলে, আইফোনটি একটি বিশেষ এনকোডিং ব্যবহার করে যাতে রঙিন বাইটগুলি হার্ডওয়্যারটির জন্য অনুকূলিত করা হয়। আপনি যখন আপনার প্রকল্পটি তৈরি করেন তখন এক্সকোড আপনার জন্য এই বিশেষ এনকোডিংটি পরিচালনা করে। সুতরাং, আপনি পিএনজি এর আকার বিবেচনা ব্যতীত অন্য আইফোনে ব্যবহারের অতিরিক্ত সুবিধা দেখতে পান। এই কারণে ইন্টারফেসের অংশ হিসাবে প্রদর্শিত একটি চিত্রের (টেবিলের ভিউ, লেবেল ইত্যাদিতে) পিএনজি ব্যবহার করার পরামর্শ দেওয়া হচ্ছে।

কোনও পূর্ণ স্ক্রিন চিত্র যেমন কোনও ফটোগ্রাফ প্রদর্শন করার জন্য আপনি এখনও পিএনজির সাথে সুবিধাগুলি কাটাতে পারেন কারণ সেগুলি ক্ষতিকারক নয় এবং চিত্রটির ডিকোডিংয়ের সাথে সংস্থান ব্যবহারের কথা উল্লেখ না করার জন্য জেপিজির চেয়ে ভিজ্যুয়াল মানের আরও ভাল হওয়া উচিত। ফাইল আকারে আসল সুবিধা দেখতে আপনার জেপিজির গুণমান হ্রাস করতে হতে পারে তবে আপনি অপ-অনুকূল চিত্র প্রদর্শন করছেন।

ফাইলের আকার অবশ্যই একটি ফ্যাক্টর তবে চিত্রের ফর্ম্যাট বেছে নেওয়ার সময় অন্যান্য বিবেচ্য বিষয়গুলিও রয়েছে।


5
আমার বেঞ্চমার্কে এক্সকোড অপ্টিমাইজেশন প্রকৃতপক্ষে ফাইলগুলিকে ধীর করে দিয়েছে, সম্ভবত ডিস্ক আই / ও, সিপিইউ হ'ল বাধা নয়।
কর্নেল

4
"অ্যাপল আপনার আইফোন অ্যাপ্লিকেশন বান্ডেলের অন্তর্ভুক্ত পিএনজি চিত্রগুলি অনুকূল করে" - এর অর্থ কী গতিশীলভাবে ডাউনলোড করা পিএনজি অপ্টিমাইজ হয় না?
রবার্ট

4
না, গতিশীলভাবে ডাউনলোড করা পিএনজিগুলি অনুকূলিত হয় না। অপ্টিমাইজেশনটি মূলত আরজিবিএ থেকে বিজিআরএতে বাইট অর্ডারটি অদলবদল করে যা আইফোন গ্রাফিক্স চিপ অভ্যন্তরীণভাবে ব্যবহার করে। এখানে আরও তথ্য: গ্রাফিক্সপিটিমাইজেশন.
নিক লকউড

11

পিএনজির সাথে চিন্তা করার একটি গুরুত্বপূর্ণ বিষয় রয়েছে। যদি আপনার এক্সকোড বিল্ডে কোনও পিএনজি অন্তর্ভুক্ত থাকে তবে এটি আইওএসের জন্য অনুকূলিত হবে। একে পিএনজি ক্রাশ বলা হয়। যদি আপনার পিএনজি রান সময়ে ডাউনলোড হয় তবে এটি পিষ্ট হবে না। পিষ্ট পিএনজিগুলি প্রায় 100% জেপিজি হিসাবে চালিত হয়। নিম্নমানের জেপিজি উচ্চ মানের মানের জেপিজিগুলির চেয়ে ভাল চালায়। সুতরাং দ্রুত থেকে ধীরের দিকে পারফরম্যান্সের দিক থেকে এটি নিম্নমানের জেপিজি, উচ্চ মানের জেপিজি, পিএনজি ক্রাশড, পিএনজি যাবে।

আপনার যদি পিএনজি ডাউনলোড করতে হয় তবে ডাউনলোডের আগে আপনার সার্ভারে পিএনজিগুলি পিষে ফেলা উচিত।

http://www.cocoanetics.com/2011/10/avoider-image-decompression-sickness/


9

Cocoanetics একটা চমৎকার আইওএস কর্মক্ষমতা মাত্রাবিশিষ্ট প্রকাশিত ব্লগে বিভিন্ন মানের মাত্রা, এবং PNGs এ JPGs এর সঙ্গে এবং বিপর্যয়কর ছাড়া।

তার উপসংহার থেকে:

আপনার যদি একেবারে একটি আলফা চ্যানেল দরকার হয় বা পিএনজির সাথে যেতে হয় তবে আপনার ওয়েব সার্ভারে pngcrush সরঞ্জামটি ইনস্টল করার পরামর্শ দেওয়া হয় এবং এটি আপনার সমস্ত পিএনজি প্রসেস করা উচিত। প্রায় সব ক্ষেত্রেই উচ্চমানের জেপিইজি দ্রুত সংক্ষেপণ এবং রেন্ডারিং সহ ছোট ফাইল আকার (অর্থাত্ দ্রুত সংক্রমণ) একত্রিত করে।

দেখা যাচ্ছে যে পিএনজিগুলি ছোট ছবিগুলির জন্য দুর্দান্ত যা আপনি ইউআই উপাদানগুলির জন্য ব্যবহার করেন তবে ক্যাটালগ বা ম্যাগাজিনের মতো কোনও পূর্ণ পর্দার অ্যাপ্লিকেশনগুলির জন্য তারা যুক্তিসঙ্গত নয়। সেখানে আপনি আপনার উত্স উপাদানের উপর নির্ভর করে 60 থেকে 80% এর মধ্যে একটি সংক্ষেপণ গুণমান চয়ন করতে চান।

এটি প্রদর্শন করার জন্য সমস্ত কিছু পাওয়ার ক্ষেত্রে আপনি ইউআইআইমেজ উদাহরণগুলিতে ঝুলতে চাইবেন যেখান থেকে আপনি একবার আঁকেন কারণ সেগুলির মধ্যে ফাইলের একটি ক্যাশেড সংস্করণ রয়েছে। এবং যেখানে আপনি স্ক্রিনে কোনও বৃহত চিত্র উপস্থিত হওয়ার জন্য ভিজ্যুয়াল বিরতি দেয় না সেখানে আপনাকে বেশ কয়েকটি চিত্রের জন্য আগে থেকে ডিকম্প্রেশন চাপতে হবে। তবে মনে রাখবেন যে এগুলি প্রচুর পরিমাণে র‍্যাম গ্রহণ করবে এবং আপনি যদি এটি অতিরিক্ত পরিমাণে করেন তবে এটি আপনার অ্যাপ্লিকেশনটি বন্ধ হতে পারে। NSCache হ'ল ঘন ঘন ব্যবহৃত চিত্রগুলি রাখার একটি দুর্দান্ত জায়গা কারণ এটি যখন স্বয়ংক্রিয়ভাবে র্যাম দুষ্প্রাপ্য হয়ে যায় তখন চিত্রগুলি সরিয়ে দেওয়ার ক্ষেত্রে এটি স্বয়ংক্রিয়ভাবে যত্ন নেয়।

দুর্ভাগ্যজনক যে কোনও চিত্রের এখনও ডিসপ্রেসিং প্রয়োজন হয় কিনা তা আমাদের জানার কোনও উপায় নেই। এছাড়াও কোনও চিত্র আমাদের এই প্রভাব সম্পর্কে অবহিত না করে সঙ্কুচিত সংস্করণটিকে উচ্ছেদ করেছে। এটি অ্যাপলের বাগ রিপোর্টিং সাইটটিতে উত্থাপন করা ভাল রাডার হতে পারে। তবে ভাগ্যক্রমে চিত্রটি উপরে বর্ণিত হিসাবে অ্যাক্সেস করতে সময় লাগে না যদি ইমেজটি ইতিমধ্যে সঙ্কুচিত হয়ে থাকে। সুতরাং আপনি কেবল এটি "সময় সময়ে" নয় "কেবল ক্ষেত্রে" করতে পারেন could


হুবহু, এবং জেপিগিনি এবং ইমেজঅ্যাপটিম জেপিগগুলি সত্যিই ছোট করে তোলে!
ইলেক্ট্রনিক্স

7

ভেবেছিলাম আমি কিছুটা ডিকম্প্রেশন পারফরম্যান্স ডেটা শেয়ার করব ...

আমি কোনও 360 ডিগ্রি দর্শকের কিছু প্রোটোটাইপিং করছি - এমন একটি ক্যারোসেল যেখানে ব্যবহারকারী কোনও জিনিসকে সহজেই আবর্তিত করতে সক্ষম হওয়ার ধারণা দেওয়ার জন্য বিভিন্ন কোণ থেকে তোলা বিভিন্ন সিরিজের ফটো দিয়ে স্পিন করতে পারে।

আমি ইমেজ ডেটাটি এনএসডিটা'র একটি অ্যারেতে সমীকরণের বাইরে ফাইল আই / ও নেওয়ার জন্য লোড করেছি, তবে উড়ে যেতে এনএসআইমেজ তৈরি করব। সর্বাধিক ফ্রেম রেটে (f 25 fps) পরীক্ষা করা এবং ইনস্ট্রুমেন্টগুলিতে দেখার জন্য আমি অ্যাপ্লিকেশনটি স্পষ্টতই সিপিইউ-বাইনড এবং সিপিইউ লোডে প্রায় 10% বৃদ্ধি পেয়েছে ~ 275 কেবি পিএনজি এর বনাম ~ 75 কেবি জেপিজি।

আমি নিশ্চিতভাবে বলতে পারি না তবে আমার অনুমান যে সিপিইউ সীমাটি সাধারণ প্রোগ্রাম প্রয়োগ থেকে এবং সমস্ত ডেটা মেমরির চারপাশে সরিয়ে নেওয়া হয় তবে জিপিইউতে সেই চিত্রটি সংক্ষেপণ হয়। যে কোনও উপায়ে এবং জেপিজি বনাম পিএনজি পারফরম্যান্স আর্গুমেন্টটি জেপিজিকে সমর্থন করে বলে মনে করে, বিশেষত যখন ছোট ফাইল আকার (এবং কমপক্ষে চেইনের কিছু অংশে মেমরির ছোট ছোট আকারের অবজেক্টগুলি) বিবেচনায় নেওয়া হয়।

অবশ্যই প্রতিটি পরিস্থিতি আলাদা, পরীক্ষার বিকল্প নেই ...


4
জিপিইউ পিএনজিগুলি সংক্ষেপিত করতে পারে না। এটি ব্যবহৃত ডিফল্ট ফর্ম্যাটটি জিপিইউকে যে ধরণের সমান্তরাল করে তোলে তার জন্য উপযুক্ত নয়। আমি অনুমান করি যে জেপিজির ডিকোডিং আংশিকভাবে জিপিইউ-ত্বরান্বিত হতে পারে, কারণ এতে রঙস্পেস রূপান্তর জড়িত রয়েছে।
কর্নেল

5

Jpegs বনাম png ব্যবহার করার সময় অ্যানিমেশন কর্মক্ষেত্রে আমি ব্যাপক পার্থক্য পেয়েছি। উদাহরণস্বরূপ, একটি ইউআইএসক্রোলভিউতে পাশাপাশি তিনটি স্ক্রিন-আকারের জেপিগগুলি রেখে দেওয়া এবং আইফোন 4 এর উপর অনুভূমিকভাবে স্ক্রোল করা পিছিয়ে যায় এবং একটি সম্পূর্ণরূপে অপ্রীতিকর জারকি অ্যানিমেশন। একই মাত্রার স্বচ্ছ png গুলি সহ স্ক্রোলিংটি মসৃণ। চিত্রটি বড় হলেও আমি কখনই জেপিগ ব্যবহার করি না।


1

আমি মনে করি আপনি যদি স্বচ্ছ ব্যবহার করতে চান তবে আপনার পিএনজি ছাড়া কোনও বিকল্প নেই। তবে, যদি আপনার পটভূমি ইতিমধ্যে অস্বচ্ছ হয় তবে আপনি জেপিজি ব্যবহার করতে পারেন। এটাই আমি দেখতে পাচ্ছি difference


4
এটি জেপিজি বনাম পিএনজি-র কোনও কার্যকারিতা বিবেচনা করে না।
ডেভম্যাক

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.