Tôi làm cách nào để lưu hình ảnh vào thẻ SD mà tôi truy xuất được từ URL của hình ảnh?Làm cách nào để chuyển hình ảnh từ URL của nó sang thẻ SD?
Trả lời
Trước tiên, bạn phải đảm bảo rằng ứng dụng của bạn có quyền ghi vào sdcard. Để thực hiện việc này, bạn cần thêm quyền sử dụng ghi bộ nhớ ngoài vào tệp kê khai ứng dụng của bạn. Xem Setting Android Permissions
Sau đó, bạn có thể tải URL xuống tệp trên sdcard. Một cách đơn giản là:
URL url = new URL ("file://some/path/anImage.png");
InputStream input = url.openStream();
try {
//The sdcard directory e.g. '/sdcard' can be used directly, or
//more safely abstracted with getExternalStorageDirectory()
File storagePath = Environment.getExternalStorageDirectory();
OutputStream output = new FileOutputStream (new File(storagePath,"myImage.png"));
try {
byte[] buffer = new byte[aReasonableSize];
int bytesRead = 0;
while ((bytesRead = input.read(buffer, 0, buffer.length)) >= 0) {
output.write(buffer, 0, bytesRead);
}
} finally {
output.close();
}
} finally {
input.close();
}
EDIT: phép Đặt trong manifest
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
@Paresh: Cảm ơn, tôi đã cập nhật mã để sử dụng 'getExternalStorageDirectory()'. Bạn có biết nếu nó trả về dấu gạch chéo không? ví dụ. '/ sdcard' hoặc'/sdcard/' – Akusete
Câu hỏi của bạn là tranh luận vì' Environment.getExternalStorageDirectory() 'không trả về một' Chuỗi' và do đó mã của bạn không biên dịch. Tôi đã sửa mã của bạn cho bạn. –
aReasonableSize ?? –
Một ví dụ tuyệt vời có thể được tìm thấy trong latest post trên blog Android phát triển của:
static Bitmap downloadBitmap(String url) {
final AndroidHttpClient client = AndroidHttpClient.newInstance("Android");
final HttpGet getRequest = new HttpGet(url);
try {
HttpResponse response = client.execute(getRequest);
final int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != HttpStatus.SC_OK) {
Log.w("ImageDownloader", "Error " + statusCode +
" while retrieving bitmap from " + url);
return null;
}
final HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream inputStream = null;
try {
inputStream = entity.getContent();
final Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
return bitmap;
} finally {
if (inputStream != null) {
inputStream.close();
}
entity.consumeContent();
}
}
} catch (Exception e) {
// Could provide a more explicit error message for IOException or
// IllegalStateException
getRequest.abort();
Log.w("ImageDownloader", "Error while retrieving bitmap from " + url,
e.toString());
} finally {
if (client != null) {
client.close();
}
}
return null;
}
Điều này không mô tả cách lưu hình ảnh vào sdcard, chỉ cách tải hình ảnh vào bộ nhớ. –
Câu trả lời này nhận được 9 upvotes như thế nào?! ... –
- 1. Android - Lưu hình ảnh từ URL vào thẻ SD
- 2. Android chuyển sang hành vi thẻ SD
- 3. Di chuyển ứng dụng sang thẻ SD
- 4. hình ảnh truy cập trong thẻ SD
- 5. Android - Lưu hình ảnh đã tải xuống từ URL vào thẻ SD
- 6. Android: Hiển thị hình ảnh từ thẻ SD
- 7. Không thể di chuyển ứng dụng sang thẻ SD
- 8. Làm cách nào để chuyển đổi hình thức của Kiểm soát sang hình ảnh?
- 9. Làm cách nào để lưu hình ảnh từ URL?
- 10. Lưu hình ảnh bitmap vào thẻ SD trong Android
- 11. Làm cách nào để tạo thẻ trả về từ URL?
- 12. Đang tải drawable từ thẻ sd
- 13. Làm thế nào để sao chép hình ảnh vào thẻ sd giả lập Android từ đĩa cứng?
- 14. Ứng dụng Android của tôi đang làm hỏng Thẻ SD
- 15. Làm thế nào để chuyển đổi hình ảnh sang html?
- 16. Cách tạo video từ Thẻ SD
- 17. Cách lưu hình ảnh vào thẻ SD trên nút Nhấp vào android
- 18. Android: Nhận hình thu nhỏ của hình ảnh trên thẻ SD, được cung cấp Uri của hình ảnh gốc
- 19. Android: Cách tạo thư mục trên Thẻ SD và sao chép tệp từ/res/raw sang nó?
- 20. Cách tải hình ảnh từ thẻ SD và chạy hoạt ảnh bằng AnimationDrawable hoặc AnimationUtils trong Android
- 21. Tôi làm cách nào để lấy tên của hình ảnh từ url?
- 22. Cách tìm hiểu xem ứng dụng đã được di chuyển sang thẻ SD trên Android
- 23. Hiệu suất ghi thẻ SD
- 24. hình ảnh từ URL để dòng
- 25. Cách xem hình ảnh được đẩy vào thẻ sd trong trình giả lập
- 26. Tôi làm cách nào để tải tệp video xuống thẻ SD?
- 27. làm thế nào để phân tích ra tên hình ảnh từ url hình ảnh
- 28. Làm thế nào để chuyển đổi hình ảnh sang mã hóa base64?
- 29. Làm cách nào để chuyển đổi kho lưu trữ Git sang Mercurial và mang theo các thẻ của nó
- 30. Làm thế nào để chuyển đổi hình ảnh từ np.uint16 sang np.uint8?
@Akusete ... bạn nên thay thế 'buffer.length' trong output.write (buffer, 0, buffer.length); để bytesRead. Nếu không thì dữ liệu rác sẽ được thêm vào cuối tệp. – shaffooo