2012-02-22 22 views
8

1 XML'de bir ImageView ve bir Düğme kullanıyorum ve görüntüleri webServer'dan URL olarak alıyorum ve bunu ImageView'da görüntüliyorum. Şimdi eğer Düğme (Kaydet) tıklanmışsa, o görüntüyü SD karta kaydetmem gerekiyor. Bu nasıl yapılır?Görüntüyü SD karta kaydetme düğmesi Android'e tıklayın

NOT: Mevcut Resim Kaydedilmelidir.

+1

kullanmak arama ilk! http://stackoverflow.com/questions/4875114/android-save-image-from-url-onto-sd-card –

cevap

49

İlk olduğunu size Bitmap almak gerekir. Zaten bir nesne Bitmap olarak sağlayabilir veya gibi sen ImageView adresinden elde deneyebilirsiniz: Sonra SD karttan dizinde (bir File nesne) almak zorundadır

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

örneğin:

File sdCardDirectory = Environment.getExternalStorageDirectory(); 

Sonraki görüntü depolama için özel bir dosya oluşturmak: Bundan sonra

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

, sadece gibi onun yöntemine compress için Bitmap sayesinde yazmak zorunda:

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(); 
    } 

Son olarak, gerekirse, yalnızca boole sonucunu ele alın. Mesela:

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(); 
    } 

Manifest'inizde aşağıdaki iznini ekleyin unutmayın:

cevaplar bir çok sorunuzun vardır
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
+0

R u Tabi ki, Bu örnek, mevcut görüntüyü düğme düğmesine kaydeder. Denedim ama kaydedilemedi –

+0

Rectified.Very Çok Açık Örnek ... Harika, Teşekkürler dude –

+0

@ Romain: Farklı isimlerde resimleri nasıl kaydederim? diğer görüntüyü kaydetmek için tıklamalar önceki resim geçersiz kıldı ... –

5

Olası Çözüm

Android - Saving a downloaded image from URL onto SD card

Bitmap bitMapImg; 
void saveImage() { 
     File filename; 
     try { 
      String path = Environment.getExternalStorageDirectory().toString(); 

      new File(path + "/folder/subfolder").mkdirs(); 
      filename = new File(path + "/folder/subfolder/image.jpg"); 

      FileOutputStream out = new FileOutputStream(filename); 

      bitMapImg.compress(Bitmap.CompressFormat.JPEG, 90, out); 
      out.flush(); 
      out.close(); 

      MediaStore.Images.Media.insertImage(getContentResolver(), filename.getAbsolutePath(), filename.getName(), filename.getName()); 

      Toast.makeText(getApplicationContext(), "File is Saved in " + filename, 1000).show(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 
+0

bmImg null erkeği gösterir –

+1

projemde çalışıyor .. teşekkür ederim. – Drx

İlgili konular