2013-08-22 4 views
10

तो मुझे लगता है कि कुछ नए (आईएसएच) कार्यों का प्रस्ताव किया जा रहा है; toDataURLHD, toBlobHD, getImageDataHD, आदि जो "मूल कैनवास बिटमैप रिज़ॉल्यूशन पर [डेटा] देता है" (http://developers.whatwg.org/the-canvas-element.html)।toDataURL बनाम toDataURLHD

लेकिन मुझे शब्दावली को समझ में नहीं आता है। क्या इसका मतलब यह है कि ऐसी स्थितियां हैं जहां गैर-एचडी संस्करण इसे वापस करने से पहले छवि डेटा को पुन: सहेज लेंगे? (यानी एक उच्च-रिज़ॉल्यूशन डिस्प्ले पर toDataURL वास्तविक छवि कैनवास की तुलना में कम गुणवत्ता वाली छवि उत्पन्न कर सकता है), या क्या यह छवि में पिक्सेल-प्रति-इंच मेटाडेटा का जिक्र कर रहा है?

मैं कई स्केलिंग विधियों के साथ प्रयोग कर रहा हूं जैसा कि मैं सोच सकता हूं (fiddle: http://jsfiddle.net/SktKQ/) और यह हमेशा पिक्सेल-फिक्स-पिक्सेल लगता है, लेकिन यह शायद ही निर्णायक है और मुझे किसी भी उच्च तक पहुंच नहीं है परीक्षण करने के लिए प्रदर्शन प्रदर्शित करता है।

सभी मैं तलाश कर रहा हूँ है: मैं अपने कैनवास के पिक्सेल के लिए पिक्सेल प्रतियां उत्पादन पर toDataURL & कं भरोसा कर सकते हैं, जो चौड़ाई और ऊंचाई बिल्कुल के बराबर तत्व पर सेट गुण है? (और यदि हां, तो HD संस्करणों की बात क्या है?)

उत्तर

4

WhatWG documents on canvas निम्नलिखित कहते हैं:

अंतरिक्ष समन्वय जरूरी वास्तविक बिटमैप्स के आकार का प्रतिनिधित्व नहीं करता है कि उपयोगकर्ता एजेंट का आकार आंतरिक रूप से या प्रतिपादन के दौरान उपयोग करेंगे। उदाहरण के लिए, उच्च परिभाषा प्रदर्शित करता है, उदाहरण के लिए, उपयोगकर्ता एजेंट आंतरिक रूप से समन्वय स्थान में इकाई प्रति डिवाइस डिवाइस पिक्सल के साथ बिटमैप्स का उपयोग कर सकता है, ताकि प्रतिपादन पूरे उच्च गुणवत्ता पर बना रहता है। एंटी-एलियासिंग को प्रदर्शन पर अंतिम छवि की तुलना में उच्च रिज़ॉल्यूशन के बिटमैप्स के साथ ओवर-सैंपलिंग का उपयोग करके कार्यान्वित किया जा सकता है।

और

toDataURL() विधि 96dpi के एक संकल्प पर डेटा देता है। toDataURLHD() विधि इसे मूल कैनवास बिटमैप रिज़ॉल्यूशन पर लौटाती है।

मैं यह कैसे समझता हूं कि toDataURL केवल सीएसएस पिक्सल (96 डीपीआई पर) देता है; लेकिन कार्यान्वयन उच्च पिक्सेल घनत्व का उपयोग करने के लिए स्वतंत्र है जो केवल toDataURLHD के माध्यम से दिखाई देगा। यही है, भले ही आप अपने कैनवास को 800x600 के रूप में परिभाषित करते हैं, एक सीएसएस पिक्सेल आकार होने के नाते, एक कार्यान्वयन वास्तव में 1 9 2 डीपीआई घनत्व (1600x1200) का उपयोग कर सकता है; यदि आप पूर्व का उपयोग करते हैं, तो आपको 800x600 मिलते हैं, जबकि HD विधि आपको वास्तविक पिक्सल प्राप्त करेगी, गारंटीकृत।

इसके अलावा निम्नलिखित कहा गया है:

इस प्रकार, 2 डी संदर्भ में, drawImage() विधि बुला कैनवास को toDataURLHD() विधि के उत्पादन में प्रस्तुत करना, उचित आयाम को देखते हुए किया गया है कोई दृश्य प्रभाव नहीं।

हालांकि यह गारंटी नहीं है कि toDataURL से छवि डेटा का उपयोग करने से कोई प्रभाव नहीं पड़ेगा (खराब समाधान का होना)।

+0

कोई संभावना नहीं है जिसके बारे में मैंने सोचा था।इसलिए, यदि मैं 2x रिज़ॉल्यूशन वाले डिस्प्ले पर 100x100 होने के लिए कैनवास सेट करता हूं, तो मैं वास्तव में 200x200 (100x100 पर प्रदर्शित) के आकार के साथ कैनवास प्राप्त कर सकता हूं। उस स्थिति में, 'toDataURL' आकार 100x100 (कुछ विधि द्वारा स्केल किया गया) की एक छवि देगा, लेकिन 'toDataURLHD' पिक्सेल-फॉर पिक्सेल 200x200 छवि देगा। क्या यह आपकी समझ के साथ फिट है? (संबंधित प्रश्न: क्या मैं इसे उच्च रिज़ॉल्यूशन डिस्प्ले पर एक बड़ी छवि का उत्पादन न करने के लिए मजबूर कर सकता हूं?) – Dave

+0

मुझे लगता है कि यह मेरी समझ भी है, हालांकि मैंने दस्तावेज़ों को पढ़ा है। मुझे लगता है कि यह एप्पल सामान पर नए रेटिना डिस्प्ले जैसे उपकरणों के लिए है; वे उपकरणों की विस्तारित प्रतिपादन क्षमताओं का उपयोग कर सकते हैं जबकि एक ही समय में एक ही तरीके से बिछाते हैं। –

+0

"इसे बड़ी छवि बनाने के लिए मजबूर करने" के लिए, तो मुझे –

संबंधित मुद्दे