मैं एंड्रॉइड पर काम कर रहा हूं और एक छविव्यू पर एक वेबसाइट से एक फेविकॉन (.ICO) डाउनलोड और प्रदर्शित करने की कोशिश कर रहा हूं।क्या 16x16 से बड़े रिज़ॉल्यूशन में एक .ICO फ़ाइल को डीकोड करने का कोई तरीका है?
अब तक मैंने HTTP कनेक्शन का उपयोग कर वेबसाइट से .ico को पढ़ने का प्रबंधन किया है, इसे इनपुट इनपुट के रूप में पुनर्प्राप्त करें। फिर मैं बिटमैप में स्ट्रीम को डीकोड करने के लिए बिटमैप फैक्ट्री का उपयोग करता हूं और इसे ImageView पर प्रदर्शित करता हूं। यहां कोड है:
public Bitmap getBitmapFromURL(URL src) {
try {
URL url = new URL("http", "www.google.com", "/favicon.ico");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
BitmapFactory.Options options = new BitmapFactory.Options();
Bitmap myBitmap = BitmapFactory.decodeStream(input, null, options);
return myBitmap;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
समस्या यह है कि इनपुटस्ट्रीम का डीकोडिंग हमेशा एक छोटा 16x16 बिटमैप देता है। अगर मुझे अच्छी तरह से समझ में आता है, तो एक एकल .ICO फ़ाइल विभिन्न छवि संकल्पों को स्टोर कर सकती है, जैसे कि 32x32 और 64x64। मेरा सवाल है, क्या 16x16 के बजाय 32x32 या 64x64 बिटमैप को डीकोड करने का कोई तरीका है?
इसके अलावा, अगर बिटमैप फैक्ट्री के साथ कोई समाधान नहीं है, तो क्या ऐसा करने के लिए कोई लाइब्रेरी या जावा कोड है?
नोट: मैं बिटमैप का आकार बदलना नहीं चाहता, मैं छवि गुणवत्ता को खोने के बिना 32x32 (या बड़ा) संकल्प चाहता हूं।
अग्रिम धन्यवाद।
शायद यह विशिष्ट .ico में केवल 16x16 संस्करण है? –
मुझे ऐसा नहीं लगता है, अगर आप अपने ब्राउज़र पर www.google.com/favicon.ico टाइप करते हैं तो यह आपको 32x32 छवि प्रस्तुत करता है। जब तक मैं कुछ याद नहीं कर रहा हूं, यह दिखाता है कि फ़ाइल में कम से कम 32x32 छवि एन्कोड की गई है। बिटमैप फैक्ट्री या तो, किसी कारण से 32x32 संस्करण को स्केल कर रहा है, या एक और संस्करण है, फ़ाइल में 16x16 भी एन्कोड किया गया है और बिटमैप फैक्ट्री उसको डीकोड करने के लिए तैयार है। –
@ डेविडनेटो मुझे नहीं पता था कि आप इस तरह से एक आईको फ़ाइल को पढ़ और डीकोड कर सकते हैं। क्या आप वास्तव में उस 16x16 छवि को प्रदर्शित कर सकते हैं? – quinestor