- Yeah, you have to download the image in order to display it, but you don't have to store it forever, you can decode the 
ByteArray using BitmapFactory to get the Bitmap of your image. Or use a lib like Picasso to "cache" your image, like it was suggested on another answer. 
This question discusses many methods on how to download images on Android using some libs. Or you could try a native approach, like this:
public class LoginActivity extends Activity implements OnClickListener {
   protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.login);
   this.findViewById(R.id.userinfo_submit).setOnClickListener(this);
   // Verify Code
   LinearLayout view = (LinearLayout) findViewById(R.id.txt_verify_code);
   view.addView(new VerifyCodeView(this));
   // show The Image
   new DownloadImageTask((ImageView) findViewById(R.id.imageView1))
   .execute(“http://java.sogeti.nl/JavaBlog/wp-content/uploads/2009/04/android_icon_256.png”);
   }
  public void onClick(View v) {
    startActivity(new Intent(this, IndexActivity.class));
    finish();
  }
  private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    ImageView bmImage;
    public DownloadImageTask(ImageView bmImage) {
      this.bmImage = bmImage;
    }
    protected Bitmap doInBackground(String… urls) {
      String urldisplay = urls[0];
      Bitmap mIcon11 = null;
      try {
        InputStream in = new java.net.URL(urldisplay).openStream();
        mIcon11 = BitmapFactory.decodeStream(in);
      } catch (Exception e) {
        Log.e(“Error”, e.getMessage());
        e.printStackTrace();
      }
      return mIcon11;
    }
    protected void onPostExecute(Bitmap result) {
      bmImage.setImageBitmap(result);
    }
  }
}
This code was taken from here.
- You can encode your image as a Base64 
String on your server and decode it on your Android later. 
To decode it try the following:
byte[] data = Base64.decode(base64Image, Base64.DEFAULT);
Bitmap bm;
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inMutable = true;
bm = BitmapFactory.decodeByteArray(data, 0, data.length, opt);
// Now do whatever you want with the Bitmap.
You can see the docs for the Bitmap class here.
But honestly, you're just adding another step to the process and wasting processor cycles with that. I guess it's more efficient to just download the image as it is.
For more info on the Base64 class, please refer to the docs.