সংস্থানগুলির দ্বিগুণ সংকোচনের বিষয়টি এড়িয়ে চলুন


13

আমি .pngআমার টেক্সচারের জন্য গুলি ব্যবহার করছি এবং .zipআমার গেম প্রকল্পের জন্য একটি ফাইলে ভার্চুয়াল ফাইল সিস্টেম ব্যবহার করছি । এর অর্থ আমার টেক্সচারগুলি দু'বার সংকুচিত এবং সংক্ষেপিত। এই ডাবল সংক্ষেপণের সমস্যার সমাধানগুলি কী কী? আমি যে সমাধানগুলির বিষয়ে শুনেছি তা হল .tgaটেক্সচারের জন্য এস ব্যবহার করা, তবে এটি বহুযুগ আগে মনে হয়েছিল, যেহেতু আমি এটি শুনেছি। আর একটি সমাধান হ'ল ডিকম্প্রেশন বাস্তবায়ন করা GPUএবং যেহেতু এটি দ্রুত, তাই ওভারহেডটি ভুলে যান।


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

উত্তর:


17

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

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

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

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

এখানে চিত্র বর্ণনা লিখুন

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

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

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

নীচের লাইন: আপনি ডাবল কম্প্রেশন এড়াতে এখনও কম FILESIZE, হয় ব্যবহার থাকার চান, তখন PNGসঙ্গে Storeজিপ আলগোরিদিম বা BMPএকটি সংকুচিত জিপ আলগোরিদিম সঙ্গে।


5
আমি আমার এবং পিএনজির কয়েকটি ছবিতে এটি করেছি (কম্প্রেশন লেভেল 9) বিএমপি চিত্রগুলির জিপ (সংকোচনের স্তর আল্ট্রা) সারাংশ প্রায় 20% দিয়ে ফেলেছি। সুতরাং এটি মেটা-তথ্যের মতো প্রভাব হওয়া উচিত।
ট্রায়ারিলিয়ন

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

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

আপনার বিএমপি বা টিজিএগুলি 24-বিট বা 32-বিট? বিশেষত বিএমপি সহ তারা 24-বিট হওয়ার সম্ভাবনা বেশি থাকে এবং সঙ্কুচিত টিজিএ আকারটি এটি 24-বিট থেকেও বোঝায়। আপনি সম্ভবত এখানে-মত-এর সাথে তুলনা করছেন না।
ম্যাক্সিমাস মিনিমাস 21

@ জিমিশেল্টার টিজিএ এবং বিএমপি উভয়ই আলফা চ্যানেলের সাথে 32 বিট - আমি নিশ্চিত হয়েছি।
ফিলিপ

7

এটি সম্পর্কে চিন্তা করবেন না।

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

http://en.wikipedia.org/wiki/DEFLATE


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

ফাইলটি সংকোচণযোগ্য নয় বুঝতে পেরে এই সংকোচনের সমাপ্তি কি দীর্ঘ সময় নিতে পারে?
ব্যবহারকারী 253751

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

2

দেখে মনে হচ্ছে কিছু ইতিমধ্যে খুব ভাল উত্তর দেওয়া হয়েছে, তবে আমি ভেবেছিলাম যে আমি আরও একটি উত্তর দেব:

What are the solutions to this double compression problem?

সমাধান: কিছুই করবেন না।

যুক্তি: এখানে কোনও সমস্যা বলা হয়নি - হ্যাঁ আপনি তথ্যটি দু'বার সংক্ষেপে লিখছেন, তবে কেন আপনি এই বিষয়ে উদ্বিগ্ন? তথ্য আকার কি খুব বড়? Decompression খুব ধীর? এই মুহুর্তে আপনি যে ডজনখানেক বৈশিষ্ট্য যুক্ত করতে, সংশোধন করতে, পরীক্ষা করতে এবং / অথবা ডিবাগিং করতে পারেন তার চেয়ে কি এটি কম বা কম গুরুত্বপূর্ণ?


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

আমি একটি পেশাদার গেম ডে, এবং আমি আপনাকে আশ্বাস দিতে পারি যদি না আসল, ডকুমেন্টেড পারফরম্যান্সের সমস্যা না থাকে তবে আমরা এটি নিয়ে দুশ্চিন্তা করে দ্বিতীয়টি নষ্ট করব না - এই কথার জন্য মূল্য দিতে it 0.99 ক্রয় বা বিজ্ঞাপনের ইমপ্রেশন লাগে takes এই সমস্যাটি সঠিকভাবে 'সংশোধন' করার ঘন্টা hours দুবার কিছু করা কোনও সমস্যা নয়, যদিও এটি অকার্যকর হতে পারে। যদিও এই ক্ষেত্রে আপনি একই জিনিস দু'বার করছেন না - আপনার কাছে এমন চিত্রের ডেটা পাওয়া গেছে যা সংকোচনের জন্য পিএনজি হিসাবে সংরক্ষণ করা হচ্ছে এবং একসাথে সংরক্ষণাগারভুক্ত ফাইলগুলির পুরো গোছা।
NPSF3000

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

সুতরাং আপনি ব্যয়, কি 2 সপ্তাহ, এক মাস জিপিইউতে Deflate বাস্তবায়ন? এবং তারপরে আপনি বুঝতে পেরেছেন যে আপনি Y এর চেয়ে প্ল্যাটফর্ম এক্সে স্থাপন করতে চলেছেন এবং জেড এর মাধ্যমে আপনার অ্যালগরিদমকে ভেঙে ফেলেছেন you
এনপিএসএফ 3000

আপনি একবার অ্যালগরিদম (পুনরায়) জানার পরে এটি প্রয়োগ করা সহজ হওয়া উচিত। একটি স্ন্যাপ, 2 সপ্তাহ বা এক মাস নয়। এটাই আমি বলতে চেয়েছিলাম। আশির দশক থেকে এটি প্রায় হয়েছে, এটিতে কিছুটা সময় ব্যয় করা সার্থক হতে পারে।
ব্যবহারকারী 1095108

1

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

পিএনজি, ওজিজি এবং অন্যান্য ইতিমধ্যে সংক্রামিত ফর্ম্যাটগুলি আবার জিপ হিসাবে সংকোচনের মাধ্যমে খুব বেশি ছোট হবে না। 100MB টি পিএনজি সঙ্কুচিত এখনও 100MB are

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

এমনকি আপনি ভার্চুয়াল, জিপ ভিত্তিক ফাইল সিস্টেম ব্যবহার না করে সরাসরি ফাইল সিস্টেমটি ব্যবহার করতে চাইতে পারেন। এটি প্যাচিংটিকে খুব সহজ করে তুলবে: আপনি যে কোনও ফাইল পরিবর্তিত করেছেন কেবল সেগুলি সরিয়ে নিতে পারবেন।


2
কখনও কখনও কোনও ব্যক্তির কোনও পছন্দ হয় না, যেমন .zipফাইল ব্যবহার করবেন কিনা তা বিবেচনা করে। উদাহরণস্বরূপ, অ্যান্ড্রয়েড প্ল্যাটফর্মে, এটি .apkএকটি .zipফাইল যা এতে সংস্থান থাকতে পারে।
ব্যবহারকারী 1095108

3
এছাড়াও, একটি সংরক্ষণাগার ব্যবহারের সুনির্দিষ্ট সুবিধা রয়েছে এবং জিপ ফাইলগুলি সংক্ষেপণ এবং একটি সংরক্ষণাগার কাঠামো উভয়ই সরবরাহ করে।
মিঃ ক্র্যাঙ্কি

হ্যাঁ আমি জানি, আমি কেবল বলছি যে দেশীয় ফাইল সিস্টেম ব্যবহারেরও সুবিধাগুলি রয়েছে। আমি কিছুটা "এটিকে সহজ রাখি" অ্যাডভোকেট।
এপিআই-
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.