Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Android में URL से इमेज कैसे डाउनलोड करें

परिचय

नेटवर्क ऑपरेशन मुख्य थ्रेड पर नहीं किए जा सकते। यह लेख `AsyncTask` का उपयोग करके पृष्ठभूमि में इमेज डाउनलोड करने और `ImageView` में दिखाने का तरीका दिखाता है (नोट: `AsyncTask` API 30 में पदावनत है; आधुनिक ऐप्स में Coroutines, RxJava, या Retrofit का उपयोग करें)।

कार्यान्वयन

चरण 1: लेआउट (activity_main.xml)

<ImageView android:id="@+id/image" android:layout_centerInParent="true" ... /> 
<Button android:id="@+id/button" android:text="@string/button" android:layout_below="@id/image" ... />

चरण 2: strings.xml

<string name="button">Download Image</string>

चरण 3: MainActivity.java

public class MainActivity extends AppCompatActivity { 
    String url = "https://images.pexels.com/photos/1226302/pexels-photo1226302.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500"; 
    ImageView image; 
    Button button; 
    ProgressDialog mProgressDialog; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
        image = findViewById(R.id.image); 
        button = findViewById(R.id.button); 
        button.setOnClickListener(v -> new DownloadImage().execute(url)); 
    } 

    private class DownloadImage extends AsyncTask { 
        @Override 
        protected void onPreExecute() { 
            super.onPreExecute(); 
            mProgressDialog = new ProgressDialog(MainActivity.this); 
            mProgressDialog.setTitle("Download Image Tutorial"); 
            mProgressDialog.setMessage("Loading..."); 
            mProgressDialog.show(); 
        } 

        @Override 
        protected Bitmap doInBackground(String... URL) { 
            try { 
                InputStream input = new java.net.URL(URL[0]).openStream(); 
                return BitmapFactory.decodeStream(input); 
            } catch (Exception e) { 
                e.printStackTrace(); 
                return null; 
            } 
        } 

        @Override 
        protected void onPostExecute(Bitmap result) { 
            image.setImageBitmap(result); 
            mProgressDialog.dismiss(); 
        } 
    } 
}

चरण 4: AndroidManifest.xml में इंटरनेट अनुमति

<uses-permission android:name="android.permission.INTERNET" />

व्याख्या

  • `doInBackground` पृष्ठभूमि थ्रेड पर चलता है और नेटवर्क से इमेज डाउनलोड करता है।
  • `onPreExecute` और `onPostExecute` UI थ्रेड पर चलते हैं (प्रोग्रेस डायलॉग दिखाने/छिपाने के लिए)।
  • `BitmapFactory.decodeStream` इनपुट स्ट्रीम को बिटमैप में डिकोड करता है।

आधुनिक विकल्प: कोरआउटिन्स + `withContext(Dispatchers.IO)` या Glide/Picasso/Coil जैसी लाइब्रेरी।

  1. Android ऐप में URL से Bitmap कैसे प्राप्त करें? Android ऐप में URL से Bitmap कैसे प्राप्त करें?

    URL से Bitmap डाउनलोड करना यह उदाहरण दर्शाता है कि Android में AsyncTask का उपयोग करके बैकग्राउंड थ्रेड में URL से इमेज डाउनलोड करके ImageView में कैसे प्रदर्शित करें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: लेआउट में दो ImageView जोड़ें (activity_main.xml) &

  1. Android में Glide लाइब्रेरी से इमेज को Bitmap में कैसे डाउनलोड करें? Android में Glide लाइब्रेरी से इमेज को Bitmap में कैसे डाउनलोड करें?

    परिचय Glide (बम्पटेक द्वारा) एक शक्तिशाली इमेज लोडिंग लाइब्रेरी है जो इमेज को Bitmap ऑब्जेक्ट के रूप में डाउनलोड करने की अनुमति देती है। यह तब उपयोगी है जब आपको इमेज पर प्रोसेसिंग करनी हो या उसे ImageView के बाहर उपयोग करना हो। आवश्यक चरण चरण 1: नया प्रोजेक्ट बनाएं और डिपेंडेंसी जोड़ें Android Stu

  1. एंड्रॉइड फोन से रिवर्स इमेज सर्च कैसे करें एंड्रॉइड फोन से रिवर्स इमेज सर्च कैसे करें

    जब आप किसी विशिष्ट विषय से संबंधित इमेज ढूंढना चाहते हैं, तो आप बस शब्द टाइप करते हैं और इमेज विकल्प पर क्लिक करते हैं। किसी विशेष विषय से जुड़ी तस्वीरें ढूंढना आसान है। हम रिवर्स के लिए ऐसा नहीं कह सकते। भले ही अपने डेस्कटॉप पर रिवर्स इमेज सर्च करना भी आसान है, लेकिन अपने एंड्रॉइड डिवाइस पर ऐसा सर