En éste artículo vamos a ver como cojer una imagen de internet, y guardarla en la SD en formato PNG o JPEG. Para ello utilizaremos un EditText para poner la URL de la imagen, y 3 botones: Un load para cargar la imagen en un ImageView, y 2 botones para guardar la imagen en PNG o JPEG.
Ésta imagen se guardará en el directorio PICTURES de la SD.
Primero de todo, creamos el layout que contendrá lo siguiente:
main.xml (en la carpeta res/layout)

Código:

Código:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Entra una URL"
        android:textAppearance="?android:attr/textAppearanceMedium" />


    <EditText
        android:id="@+id/editTextURL"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </EditText>


    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >


        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="BLoad"//Con onClick nos evitamos implementar la clase 
                                   //onClickListener en la clase o el botón
            android:text="Load" />


        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="buttonPNG"
            android:text="Save as PNG" />


        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="buttonJPG"
            android:text="Save as JPG" />


        <LinearLayout
            android:id="@+id/linearLayout2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
        </LinearLayout>
    </LinearLayout>


    <ImageView
        android:id="@+id/imgView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.87"
         />


</LinearLayout>


Seguidamente ponemos los permisos necesarios en AndroidManifest:

Código:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Estas lineas se ponen después de la versión de SDK, concretamente esta linea:

Código:
<uses-sdk android:minSdkVersion="8" />
Hecho esto, ya podemos crear el código java necesario para hacer lo mencionado:

Código:

Código:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;


import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;


public class UF2_ACT1Activity extends Activity {


    private TextView url;
    private ImageView imgView;
    Bitmap bmp;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        url = (TextView) findViewById(R.id.editTextURL);
        imgView = (ImageView) findViewById(R.id.imgView);


    }
    //Método que se ejecuta al pulsar el botón Load
    public void BLoad(View view){
        try {


            URL urlImagen = new URL(url.getText().toString());
            URLConnection urlConn = urlImagen.openConnection();
            InputStream entrada = urlConn.getInputStream();


            bmp = BitmapFactory.decodeStream(entrada);
            imgView.setImageBitmap(bmp);


        } catch (MalformedURLException e) {
            Toast.makeText(getApplicationContext(), "URL incorrecta", Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            Toast.makeText(getApplicationContext(), "URL incorrecta", Toast.LENGTH_SHORT).show();
        }
    }
    //Método que se ejecuta al pulsar el botón Save as PNG
    public void buttonPNG(View view){


         String path = Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_PICTURES;
         File folder = new File(path);//Metemos la carpeta PICTURES en un File
         folder.mkdirs();//Si no existe la carpeta la creamos
         String name = url.getText().toString().substring(url.getText().toString().lastIndexOf("/") + 1);
         name = name.substring(0, name.lastIndexOf("."));//Cojemos el nombre de la imagen


         File file = new File(path + File.separator + name + ".png");
         try {
             file.createNewFile();
             FileOutputStream out = new FileOutputStream(file);
             bmp.compress(Bitmap.CompressFormat.PNG, 100, out);//Convertimos la imagen a PNG
         } catch (Exception e) {
             e.printStackTrace();
         }


        Toast.makeText(getApplicationContext(), "Hecho!", Toast.LENGTH_SHORT).show();
    }
    ////Método que se ejecuta al pulsar el botón Save as JPG
    public void buttonJPG(View view){


         String path = Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_PICTURES;
         File folder = new File(path);
         folder.mkdirs();
         String name = url.getText().toString().substring(url.getText().toString().lastIndexOf("/") + 1);
         name = name.substring(0, name.lastIndexOf("."));


         File file = new File(path + File.separator + name + ".jpg");
         try {
             file.createNewFile();
             FileOutputStream out = new FileOutputStream(file);
             bmp.compress(Bitmap.CompressFormat.JPEG, 100, out);//Convertimos la imagen a JPEG
         } catch (Exception e) {
             e.printStackTrace();
         }


        Toast.makeText(getApplicationContext(), "Hecho!", Toast.LENGTH_SHORT).show();
    }
}


Una vez insertemos una URL en el EditText, la carguemos con el botón Load, y la guardemos, la encontraremos en la carpeta PICTURES de la SD.