从应用程序资源下载/保存查看图片

时间:2014-01-03 10:31:38

标签: android image save

如何将我的应用程序设置为下载/保存以打电话给我正在预览的图像? 我尝试使用下面的代码,但它不起作用,它给了我错误,我无法弄清楚该错误在哪里。那么我应该替换什么呢?

public class FullImageActivity extends Activity {

Bitmap bm;

boolean isSDAvail=false, isSDWriteable = false;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.full_image);

    //AdView ad = (AdView) findViewById(R.id.adView);
    //ad.loadAd(new AdRequest());


    // get intent data
    Intent i = getIntent();

    // Selected image id
    final int position = i.getExtras().getInt("id");
    final ImageAdapter imageAdapter = new ImageAdapter(this);
    final ImageView imageView = (ImageView) findViewById(R.id.full_image_view);
    imageView.setImageResource(imageAdapter.mThumbIds[position]);


       checkSDstuff();

}


private void checkSDstuff() {
    // TODO Auto-generated method stub
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)){
    //write
        isSDAvail = true;
        isSDWriteable =true;

    }else if(Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)){
    //read only
        isSDAvail =true;
        isSDWriteable = false;
    }else{
        //uh oh
        isSDAvail = false;
        isSDWriteable =false;
}
    Button buttonSave = (Button)findViewById(R.id.download); 
    buttonSave.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(isSDAvail && isSDWriteable){

                File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
                String name = filename.getText().toString(); //how to set name from postion
                File file = new File(path, name + ".jpeg");

                path.mkdirs();
                InputStream is = getResources().openRawResource(R.drawable.pic); //here to set (imageAdapter.mThumbIds[position]) from position of ImageView
                OutputStream os = new FileOutputStream(file);
                byte[] data = new byte[is.available()];
                is.read(data);
                os.write(data);
                is.close();
                os.close();
            }
        }
    });

}

1 个答案:

答案 0 :(得分:0)

以下是从ImageView创建位图的代码:

public Bitmap getBitmapFromImageView(ImageView imageView) {
    int viewWidth = imageView.getWidth();
    int viewHeight = imageView.getHeight();
    Bitmap bitmap = Bitmap.createBitmap(viewWidth, viewHeight, Bitmap.Config.ARGB_8888);                
    Canvas canvas = new Canvas(bitmap);
    imageView.layout(0, 0, viewWidth, viewHeight);
    imageView.draw(canvas);
    return bitmap;
}

然后保存位图:

try {
   Bitmap bmp = getBitmapFromImageView(imageView);
   FileOutputStream out = new FileOutputStream(filename);
   bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
   out.close();
} catch (Exception e) {
   e.printStackTrace();
}