2010-10-20 14 views
8

एंड्रॉइड में बिटमैप को स्केल करने के लिए कम से कम दो विधियां हैं, एक बिटमैप स्रोत को डीकोड करते समय "बिटमैप फैक्ट्री.ऑप्शन" में "इनसाइडल, इनडेंसी, इन टाइटलाइन डेंसिटी" का उपयोग करना है। दूसरा "बिटमैप.क्रेट बिटमैप" में "मैट्रिक्स" का उपयोग करना है।बिटमैप को स्केल करने के तरीकों के बीच अंतर

मुझे क्या उत्सुकता है कि इन दो तरीकों के बीच क्या अंतर है? उत्पादित बिटमैप की गुणवत्ता के बारे में क्या? और स्मृति उपयोग के बारे में क्या? आदि ...

उत्तर

0

कोई "बड़ा" अंतर नहीं है। हालांकि, BitmapFactory.Options का उपयोग करने के साथ एक लाभ यह है कि आप वास्तविक Bitmap के पिक्सेल के लिए स्मृति आवंटित किए बिना अपने Bitmap की चौड़ाई/ऊंचाई की जांच कर सकते हैं।

इसके अलावा, आप आसानी से देख सकते हैं कि options BitmapFactory.OptionsBitmap.createBitmap() के साथ है और इसकी तुलना करें। सामान्य रूप से, BitmapFactory.Options डिकोडिंग और नमूना Bitmap एस को आसान बनाने के लिए "टूल" एपीआई की तरह है।

1

उचित इनस्केल विकल्पों के साथ BitmapFactory का उपयोग करके आप Bitmap.createScaledBitmap() या Bitmap.createBitmap() का उपयोग मैट्रिक्स स्केल के साथ करने से अधिक मेमोरी कुशल होने की अनुमति देंगे। हालांकि, यह अधिक जटिल है।

विवरण के लिए How do I scale a streaming bitmap in-place without reading the whole image first? देखें।

1

एक अंतर जो मैंने पाया था कि बिटमैप फैक्ट्री के विकल्प.in का उपयोग करना। बिटमैप्स स्केल करने के लिए नमूना आकार दानेदार नहीं है, क्योंकि स्केल 1/इन नमूना आकार होगा, और क्योंकि नमूना आकार एक अभिन्न संख्या होना चाहिए, तो आप स्केलिंग के साथ हवादार हो जाते हैं 1/2, 1/3, 1/4, आदि, लेकिन उससे भी ज्यादा दानेदार नहीं।

Bitmap.createScaledBitmap(), हालांकि अधिक स्मृति गहन, 1 डीपी रिज़ॉल्यूशन तक, अधिक बारीक स्केलिंग की अनुमति देता है।

+0

आप इनस्केल्ड + इनडेंसी + इन टाइटलाइन डेंसिटी विधि भूल गए हैं जो दानेदार स्केलिंग की अनुमति देता है। आपको बस स्केलिंग परिमाणों को जानना होगा और नमूना आकार में काम करना होगा। – Gensoukyou1337

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