2015-01-05 5 views
1

У меня есть изображение справа и кнопка «скачать» слева. изображение из моего рисунка. теперь, когда я пытаюсь щелкнуть загрузку, я хочу поместить изображение в мои загрузки sdcard. Пожалуйста, помогите мне, я только вижу о загрузке в url. есть другое решение для этого. СпасибоКак скачать изображение в Android?

public class ImageDownloader { 

public void download(String url, ImageView imageView) { 
     BitmapDownloaderTask task = new BitmapDownloaderTask(imageView); 
     task.execute(url); 
    } 
} 

/* class BitmapDownloaderTask, see below */ 
} 

ответ

1

Во-первых, вам нужно получить растровое изображение. Вы уже можете иметь его в качестве объекта Bitmap, или вы можете попытаться получить его от ImageView, таких как:

BitmapDrawable drawable = (BitmapDrawable) ImageView.getDrawable(); 
    Bitmap bitmap = drawable.getBitmap(); 

Тогда вы должны попасть в каталог (объект File) с SD-карты, такие как:

File sdCardDirectory = Environment.getExternalStorageDirectory(); 

Далее создайте отдельный файл для хранения изображений:

File image = new File(sdCardDirectory, "test.png"); 

После этого, вы просто должны написать Bitmap, такие как:

boolean success = false; 

// Encode the file as a PNG image. 
FileOutputStream outStream; 
try { 

    outStream = new FileOutputStream(image); 
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream); 
    /* 100 to keep full quality of the image */ 

    outStream.flush(); 
    outStream.close(); 
    success = true; 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

Наконец, при необходимости обработайте булевский результат. Такие, как:

if (success) { 
    Toast.makeText(getApplicationContext(), "Image saved with success", 
      Toast.LENGTH_LONG).show(); 
} else { 
    Toast.makeText(getApplicationContext(), 
      "Error during image saving", Toast.LENGTH_LONG).show(); 
} 

Не забудьте добавить следующее разрешение в манифесте:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
+1

О, спасибо, что то, что я искал! : D –

Смежные вопросы