有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将ImageView保存到sdcard 安卓

我想在我的安卓设备中保存一个ImageView,我在SDcard中用setImageURI显示它

我如何才能做到这一点

代码:

public class MainActivity extends ActionBarActivity {

ImageView imageView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imageView = (ImageView) findViewById(R.id.imageView);

    imageView.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent, "Select Image"), 1);
        }
    });
}

@Override
protected void onActivityResult(int reqCode, int resCode, Intent data) {
    if(resCode == RESULT_OK){
        if(reqCode == 1)
            imageView.setImageURI(data.getData());
    }
}

提前谢谢


共 (2) 个答案

  1. # 1 楼答案

    public class FileCache {
    
    private File cacheDir;
    
    public FileCache(Context context){
        //Find the dir to save cached images
        if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
            cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"TempImages");
        else
            cacheDir=context.getCacheDir();
        if(!cacheDir.exists())
            cacheDir.mkdirs();
    }
    
    public File getFile(String url) //url =http://image address
    {
        String filename=String.valueOf(url.hashCode());
        File f = new File(cacheDir, filename);
        return f;
    
    }
    
    public void clear(){
        File[] files=cacheDir.listFiles();
        if(files==null)
            return;
        for(File f:files)
            f.delete();
    }
    
    }
    
  2. # 2 楼答案

    试试这个,在onActivityResult中

    Uri imageUri = data.getData();
            Bitmap bmp = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
    
    FileOutputStream out = null;
    try {
        out = new FileOutputStream(filename);
        bmp.compress(Bitmap.CompressFormat.PNG, 100, out);     
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (out != null) {
                out.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }