2016-04-18 20 views
6

मैं Glide image loading library का उपयोग कर रहा हूं और बिटमैप्स का आकार बदलने पर मुझे समस्याएं आ रही हैं।ग्लाइड अपस्कलिंग को कैसे रोकें?

Glide.with(getActivity()) 
    .load(images.get(i)) 
    .asBitmap().centerCrop() 
    .into(new SimpleTarget<Bitmap>(1200, 1200) { 
     @Override 
     public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) { 

     } 
    }); 

हर एक बिटमैप निर्दिष्ट आयामों को आकार दिया जाता है:

निम्नलिखित कोड का उपयोग करते समय। इसलिए, अगर छवि 400x300 है, तो यह 1200 x 1200 तक बढ़ जाती है जो मैं नहीं चाहता हूं। मैं इसे कैसे बना सकता हूं ताकि यदि छवि निर्दिष्ट आयामों से छोटी हो, तो इसका आकार बदल नहीं जाएगा?

मैं आयाम निर्दिष्ट कर रहा हूं क्योंकि मैं निर्दिष्ट छवियों को centerCrop में आकार देने के लिए निर्दिष्ट आयामों से बड़ा है; और फिर यदि छवि निर्दिष्ट आयामों से छोटी है, तो मैं नहीं चाहता कि इसका आकार बदला जाए।

+0

छवि ScaleType centerCrop केंद्र से विस्तार करने के लिए अपने छवि का कारण होगा तो कि प्रत्येक पक्ष जितना बड़ा होगा, उतना बड़ा होगा जितना कि इसमें रखे गए दृश्यों की सीमाएं हैं। मैं एक ग्लाइड उपयोगकर्ता नहीं हूं, लेकिन मैं उस केंद्र को हटा दूंगा() के बाद बिटमैप() -might- आपकी मदद करता है - संपादित करें: आप आकार को 1200x1200 भी सेट कर रहे हैं, इसलिए आप जा रहे हैं किसी भी तरह से इसे बदलने के लिए – Guardanis

+0

@ गुआर्डानिस मैंने कोशिश की है, और यह केवल निर्दिष्ट किए गए किसी भी आयाम को पूरी तरह से अनदेखा करने का कारण बनता है। – Jack

+0

जब आप इसे विस्तारित नहीं करना चाहते हैं तो आप आयाम निर्दिष्ट क्यों करते हैं? आप क्या हासिल करने का प्रयास कर रहे हैं? – headsvk

उत्तर

7

मैं प्रत्येक छवि को निर्दिष्ट आयामों से बड़ा खाता केंद्र में बदलकर बदलना चाहता हूं; और फिर यदि छवि निर्दिष्ट आयामों से छोटी है, तो मैं नहीं चाहता कि इसे आकार बदलना पड़े।

public class CustomCenterCrop extends CenterCrop { 

    public CustomCenterCrop(BitmapPool bitmapPool) { 
     super(bitmapPool); 
    } 

    public CustomCenterCrop(Context context) { 
     super(context); 
    } 

    @Override 
    protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { 
     if (toTransform.getHeight() > outHeight || toTransform.getWidth() > outWidth) { 
      return super.transform(pool, toTransform, outWidth, outHeight); 
     } else { 
      return toTransform; 
     } 
    } 
} 

और उसके बाद इस तरह इसका इस्तेमाल:

आप एक कस्टम परिवर्तन के साथ इस व्यवहार प्राप्त कर सकते हैं

Glide.with(getActivity()) 
    .load(images.get(i)) 
    .asBitmap() 
    .transform(new CustomCenterCrop(getActivity())) 
    .into(new SimpleTarget<Bitmap>(1200, 1200) { 
     @Override 
     public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) { 

     } 
    }); 
संबंधित मुद्दे