क्या हम बाहर डिकोडिंग और इसे फिर से एन्कोडिंग के साथ JPEG छवि का आकार बदल सकते हैं?


12

मैं एक 640x480 जेपीईजी छवि को 320x240 में बदलना चाहता हूं। मुझे पता है कि यह JPEG छवि को कच्चे YCbCr में डिकोड करके किया जा सकता है, इसे स्केल कर सकता है और इसे JPEG में फिर से एनकोड कर सकता है। लेकिन क्या जेपीईजी एन्कोडिंग से आउट डिकोडिंग के साथ छवि को सीधे स्केल करना संभव है?

जवाबों:


14

आप कर सकते हैं, लेकिन केवल अगर आपका JPEG दर्शक SmartScale JPEG एक्सटेंशन का समर्थन करता है । jpegtran यह N / 8 के आकारों के लिए कर सकता है, N = 1..16 के साथ। मूल रूप से, डीसीटी ब्लॉक का आकार 8x8 से बदलकर पुन: संपीड़न (जैसे 4x4) के दौरान कुछ और हो जाता है, जो प्रभावी रूप से छवि को मापता है।

नोट: SmartScale को libjpeg लाइब्रेरी के संस्करण 8 में पेश किया गया था , लेकिन यह दर्शकों द्वारा व्यापक रूप से समर्थित नहीं है।

विस्तार से परिवर्तनों का वर्णन करने वाला एक दस्तावेज यहां पाया जा सकता है: जेपीईजी का विकास

संपादित करें: ऐसा लगता है कि अधिकांश दर्शक वास्तव में इन छवियों को प्रदर्शित नहीं कर सकते हैं, क्योंकि वे लिबजप्रेस-टर्बो पर आधारित हैं। और libjpeg- टर्बो ने इस सुविधा को लागू नहीं करने के लिए चुना । वास्तव में, मैंने काफी कुछ प्रोग्राम (उबंटू 14.04 और विंडोज 8 पर) की कोशिश की है और कोई भी jpegtrans का उपयोग करके बनाई गई downscaled छवि को प्रदर्शित करने में सक्षम नहीं है। यहां तक ​​कि फोटोशॉप, इरफानव्यू और जीआईएमपी भी विफल रहे।

EDIT 2: वास्तव में, Ubuntu और Fedora भी libjpeg8 लाइब्रेरी को शिप नहीं करते हैं, लेकिन इसे पूरी तरह से libjpeg-टर्बो संस्करण से बदल देते हैं। तो कोई भी प्रोग्राम जेपीईजी स्मार्टस्केल फाइलों को पढ़ने में सक्षम नहीं होगा, कुछ बायनेरिज़ के लिए बचाएं जो मूल रूप से मूल लिबजेपा 8 पुस्तकालय से जुड़े हैं।


क्या कोई कोडेक है जो छवि का निर्माण करता है जो छवि पर आगे डेटा संलग्न करके बस बढ़ता है?
नेकटविले

प्रगतिशील jpeg के बारे में क्या? क्या यह बिल्कुल वैसा नहीं है जैसा मैं पूछ रहा हूँ?
नेकटविले

नहीं, यह छवि की गुणवत्ता (निम्न से पूर्ण तक) को बढ़ाकर कुछ अलग करता है, लेकिन संकल्प हमेशा अपरिवर्तित ( संदर्भ ) होता है। हालांकि, एक और JPEG एक्सटेंशन है, जिसे "पदानुक्रमित मोड" कहा जाता है, जो विभिन्न प्रस्तावों को एन्कोड करता है ( यहां भी देखें )। लेकिन फिर से, libjpeg- टर्बो इसका समर्थन नहीं करता है ( यहां देखें , पाठ में "प्रगतिशील" के लिए खोजें)।
०४ पर जूलरीसेर

1
और पहली टिप्पणी का जवाब देने के लिए, निश्चित रूप से ऐसे कोडेक्स हैं। सिर्फ JPG नहीं। आप जिस चीज की तलाश कर रहे हैं उसे एक छवि पिरामिड, या बहु-विषयक प्रतिनिधित्व कहा जाता है। उदाहरण के लिए JPEG2000 एक तरंगिका परिवर्तन का उपयोग करता है जो एक तरंगिका पिरामिड बनाता है। अन्य पिरामिड हैं, जैसे गॉसियन या लाप्लासियन पिरामिड। यह स्लाइडसेट चीजों को कैसे काम करता है, इस पर एक अच्छा अवलोकन देता है, जबकि JPEG2000 की यहां और यहां चर्चा की गई है
jmiserez

नए JPEG फॉर्मेट की जानकारी के लिए धन्यवाद। मैं कई स्रोत छवियों (कैमरा, स्कैनर, आदि) का उपयोग करने की उम्मीद नहीं करता उन्हें अभी तक।
AFH

3

संक्षिप्त जवाब नहीं है। एक जेपीईजी छवि संपीड़न का उपयोग करती है, जिसका अर्थ है कि प्रत्येक आउटपुट बाइट अन्य सभी पर निर्भर करता है। यदि आप इमेज बाइट्स की संख्या बदलते हैं, तो आपको डिकम्प्रेस और रीकोप्रेस करना होगा।

पुनर्संयोजन के परिणामस्वरूप गुणवत्ता का नुकसान होगा, क्योंकि JPEG हानिपूर्ण संपीड़न का उपयोग करता है, लेकिन आप संकल्प को पूरा करके वैसे भी गुणवत्ता खो रहे हैं। कम-रिज़ॉल्यूशन वाली छवि से आप सबसे अच्छी संभव गुणवत्ता प्राप्त कर सकते हैं जब जेपीईजी गुणवत्ता के स्तर को फिर से जोड़कर बढ़ाते हैं, हालांकि यह निश्चित रूप से फ़ाइल आकार को बढ़ाएगा।

यदि आप छवियों के साथ बहुत काम करते हैं, तो दोषरहित संपीड़न प्रारूप में काम करना सबसे अच्छा है, जैसे कि PNG, JPEG को केवल तब परिवर्तित करना जब छवियों को अंतिम रूप दिया जाता है, बशर्ते कि आपके पास अतिरिक्त डिस्क स्थान हो।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.