2012-02-22 63 views
8

Tôi đang sử dụng một Số lần xem và Nút trong 1 XML và tôi đang cố gắng lấy hình ảnh làm URL từ máy chủ web và hiển thị hình ảnh đó trên ImageView. Bây giờ nếu nút (Save) được nhấp, tôi cần phải lưu hình ảnh cụ thể đó vào thẻ SD. làm như thế nào?Cách lưu hình ảnh vào thẻ SD trên nút Nhấp vào android

LƯU Ý: Hình ảnh hiện tại nên được lưu.

+1

Có rất nhiều câu trả lời cho câu hỏi của bạn, sử dụng tìm kiếm đầu tiên! http://stackoverflow.com/questions/4875114/android-save-image-from-url-onto-sd-card –

Trả lời

49

Trước tiên, bạn cần phải nhận được Bitmap của bạn. Bạn đã có thể có nó như một Bitmap đối tượng, hoặc bạn có thể thử để có được nó từ ImageView như:

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

Sau đó, bạn phải có được vào thư mục (một đối tượng File) từ thẻ nhớ SD như:

File sdCardDirectory = Environment.getExternalStorageDirectory(); 

Tiếp theo, tạo tập tin cụ thể của bạn để lưu trữ hình ảnh:

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

Sau đó, bạn chỉ cần phải viết nhờ Bitmap phương pháp của nó compress như:

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

Cuối cùng, chỉ cần xử lý kết quả boolean nếu cần. Chẳng hạn như:

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

Đừng quên thêm quyền sau đây trong Manifest của bạn:

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

R u Chắc chắn, ví dụ này lưu hình ảnh hiện tại trên buttonclick.I đã cố gắng nhưng nó không nhận được lưu –

+0

Rectified.Very Rất rõ ràng Ví dụ .. Làm việc tuyệt vời, Cảm ơn dude –

+0

@ Romain: Làm thế nào để lưu hình ảnh trong các tên khác nhau.Nếu tôi nhấp chuột để lưu hình ảnh khác hình ảnh trước đó đã bị ghi đè ... Tuy nhiên, chúng tôi cần tính số lượng hình ảnh được lưu trữ ở đó để làm như vậy –

5

Giải pháp Dự đoán là

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 hiển thị người đàn ông rỗng –

+1

nó hoạt động trong dự án của tôi .. cảm ơn bạn. – Drx

Các vấn đề liên quan