Tôi đang cố gắng lưu hình ảnh bằng API Picasso. Để làm điều đó tôi đang cố gắng sử dụng Target
để tiết kiệm nhưng tôi không thể làm công việc này.Lưu hình ảnh từ url bằng Picasso?
Tôi làm cách nào để thực hiện việc này?
Cố
//save image
public static void imageDownload(Context ctx){
Picasso.with(ctx)
.load("http://blog.concretesolutions.com.br/wp-content/uploads/2015/04/Android1.png")
.into(getTarget("http://blog.concretesolutions.com.br/wp-content/uploads/2015/04/Android1.png"));
}
//target to save
private static Target getTarget(final String url){
Target target = new Target(){
@Override
public void onBitmapLoaded(final Bitmap bitmap, Picasso.LoadedFrom from) {
new Thread(new Runnable() {
@Override
public void run() {
//Log.i("PRODUTOS_FOLDER", CreateAppFolder.getProdutosFolder());
File file = new File(Environment.getExternalStorageDirectory() + url);
try {
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, ostream);
ostream.flush();
ostream.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
};
return target;
}
Exception
java.io.IOException: open failed: ENOENT (No such file or directory)
Và vấn đề của bạn là gì, gọi lại không hoạt động hoặc Bitmap của bạn không được lưu hoặc bất kỳ thứ gì khác? –
@VasylGlodan không ném ngoại lệ 'java.io.IOException: mở không thành công: ENOENT (Không có tệp hoặc thư mục nào)' – FernandoPaiva
Hm, tôi không chắc chắn nhưng đường dẫn tệp của bạn sẽ trông như thế này '/ storage/emulated/0/http: // blog.concretesolutions.com.br/wp-content/uploads/2015/04/Android1.png' và hệ thống cố tìm thư mục có tên '/storage/emulated/0/http://blog.concretesolutions. com.br/wp-content/uploads/2015/04/', nhưng không có thư mục nào như vậy. Cố gắng loại bỏ tất cả các ký tự đặc biệt khỏi tên tệp. –