Java Android从url保存图像,然后检索它
我需要从Web服务提供的Url保存一个图像,然后在某些活动中,我需要检索和使用该图像 因为我已经在使用毕加索来下载和缓存图像,所以我使用了以下方法:Java Android从url保存图像,然后检索它,java,android,Java,Android,我需要从Web服务提供的Url保存一个图像,然后在某些活动中,我需要检索和使用该图像 因为我已经在使用毕加索来下载和缓存图像,所以我使用了以下方法: public void downloadFile(String url) { Picasso.with(AnimationActivity.this).load( url).into(new Target() { @Override public void onBitmapLoaded
public void downloadFile(String url) {
Picasso.with(AnimationActivity.this).load( url).into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
try {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/bBackground");
if (!myDir.exists()) {
myDir.mkdirs();
}
String name = "bBg.jpg";
myDir = new File(myDir, name);
FileOutputStream out = new FileOutputStream(myDir);
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch(Exception e){}
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {}
});
}
然后为了检索图像,我尝试使用以下代码:
String bgImagePath = Environment.getExternalStorageDirectory() + "/bBackground/bBg.jpg";
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap mustOpen = BitmapFactory.decodeFile(bgImagePath, options);
ImageView imageView = (ImageView) findViewById(R.id.bBgImage);
imageView.setImageBitmap(mustOpen);
但检索图像时出现错误:
E/BitmapFactory(30761): Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/bBackground/bBg.jpg: open failed: ENOENT (No such file or directory)
我做错了什么?这是与保存或检索方法有关的问题吗?尝试此代码此问题与毕加索目标有关
private Target loadtarget;
public void loadBitmap(String url) {
if (loadtarget == null)
loadtarget = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap,
Picasso.LoadedFrom from) {
// do something with the Bitmap
handleLoadedBitmap(bitmap);
}
@Override
public void onBitmapFailed(Drawable arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPrepareLoad(Drawable arg0) {
// TODO Auto-generated method stub
}
};
Picasso.with(this).load(url).into(loadtarget);
}
public void handleLoadedBitmap(Bitmap bitmap) {
// do something here
try {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/bBackground");
if (!myDir.exists()) {
myDir.mkdirs();
}
String name = "bBg.jpg";
myDir = new File(myDir, name);
FileOutputStream out = new FileOutputStream(myDir);
bitmap.compress(Bitmap.CompressFormat.JPEG, 70, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
String bgImagePath = Environment.getExternalStorageDirectory()
+ "/bBackground/bBg.jpg";
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap mustOpen = BitmapFactory.decodeFile(bgImagePath, options);
ImageView imageView = (ImageView) findViewById(R.id.imageView1);
imageView.setImageBitmap(mustOpen);
}
您是否在清单文件中添加了以下权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
要阅读此图像,您可以使用:
public Bitmap getBitmap(){
File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File (root.getAbsolutePath() + "/bBackground");
File image = new File(dir, "/bBg.jpg");
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap mustOpen = BitmapFactory.decodeFile(image, options);
ImageView imageView = (ImageView) findViewById(R.id.bofrostBgImage);
imageView.setImageBitmap(mustOpen);
}
您是否已检查您提供的url的回调是否返回到
onBitmapLoaded
methodLog您的异常并发布logcat(如果有)@Fractal扳手它不会返回任何异常
public Bitmap getBitmap(){
File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File (root.getAbsolutePath() + "/bBackground");
File image = new File(dir, "/bBg.jpg");
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap mustOpen = BitmapFactory.decodeFile(image, options);
ImageView imageView = (ImageView) findViewById(R.id.bofrostBgImage);
imageView.setImageBitmap(mustOpen);
}