Android デバイスの外部 SD カードに保存できるように、aDrawable
を aに変換しようとしています。bitmap
Drawable画像を取得するために次のものを使用しています:
public void setImage(Drawable image) {
ImageView filmCover = (ImageView)findViewById(R.id.filmCover);
filmCover.setImageDrawable(image);
filmCover.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
}
});
}
このDrawable
画像は別のクラスから来ています:
package com.example.devopdracht;
import java.io.InputStream;
import java.net.URL;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.util.Log;
public class PlaatjeLoader extends AsyncTask {
static Datasaver saver = new Datasaver();
private Drawable image;
private Filmpagina main;
public PlaatjeLoader(Filmpagina main) {
this.main = main;
}
@Override
protected Object doInBackground(Object... arg0) {
JSONtester filmjson = new JSONtester();
FilmObject film = filmjson.getFilmObject(saver.getClickedFilm());
String cover = film.getFilmCover();
image = LoadImageFromWebOperations("http://www.stoux.nl/film/covers/" + cover);
return true;
}
@Override
protected void onPostExecute(Object result) {
super.onPostExecute(result);
main.setImage(image);
}
public static Drawable LoadImageFromWebOperations(String url) {
try {
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src name");
return d;
} catch (Exception e) {
return null;
}
}
}
私が Stackoverflow で見つけた方法は次のとおりです。
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.something);
MediaStore.Images.Media.insertImage(getContentResolver(), bmp, "testname" , "testdescription");
しかし、これは機能しません。なぜなら、私は を呼び出しているのR.drawable.something
ではなく、単にイメージを呼び出しているからですDrawable
。
しかし、私が使用するとき
Bitmap bmp = BitmapFactory.decodeResource(getResources(), image);
次のエラーが発生します。The method decodeResource(Resources, int) in the type BitmapFactory is not applicable for the arguments (Resources,
Drawable)
インターネットから取得した画像をギャラリーに保存するにはどうすればよいですか?