zoukankan      html  css  js  c++  java
  • Android之Bitmap使用心得(持续更新)

    因为此代码里面有解释,因此直接上代码:

    public class ChangeBitmapPixel extends Activity {
        private Button btn;
        private Bitmap photo;
        private ImageView image;
        FileOutputStream fos = null;
        BufferedOutputStream bos = null;
        private ByteArrayOutputStream baos;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            image = (ImageView) findViewById(R.id.image);
            btn = (Button) findViewById(R.id.button);
            btn.setOnClickListener(new OnClickListener(){

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Intent i = new Intent("android.media.action.IMAGE_CAPTURE");
                    //如果使用下面注释的代码,将不返回数据给Intent
    //                i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment
    //                        .getExternalStorageDirectory(),"pic.jpg")));
                    
    //启动摄像头并且在拍摄后返回
                    startActivityForResult(i, 10);
                }});
            
        }
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            //两种读取文件的方法
             Uri uri = data.getData();
             if (uri != null) {
                 System.out.println("uri不为空");
                 photo = BitmapFactory.decodeFile(uri.getPath());
                 System.out.println("uri:"+photo);
             }
             
              if (photo == null) {
                  Bundle bundle = data.getExtras();
                  if (bundle != null) {
                      photo = (Bitmap) bundle.get("data");
                      image.setImageBitmap(photo);
                      //保存照片
                      savePic(photo);
                      System.out.println("photo:"+photo);
                  } else {
                      Toast.makeText(ChangeBitmapPixel.this,
                              "为空",
                              Toast.LENGTH_LONG).show();
                      return;
                  }
              }
            super.onActivityResult(requestCode, resultCode, data);
            }
        public void savePic(Bitmap bitmap){
            //使用此流读取
            baos = new ByteArrayOutputStream();
            //第二个参数影响的是图片的质量,但是图片的宽度与高度是不会受影响滴
            bitmap.compress(Bitmap.CompressFormat.JPEG, 80, baos);
            //这个函数能够设定图片的宽度与高度
            
    //Bitmap map = Bitmap.createScaledBitmap(bitmap, 400, 400, true);
            
    //把数据转为为字节数组
            byte[] byteArray = baos.toByteArray();
            try {
                fos = new FileOutputStream(Environment.getExternalStorageDirectory()+"pic.jpg");
                bos = new BufferedOutputStream(fos);
                bos.write(byteArray);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                try {
                    baos.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
            }
            
        }

  • 相关阅读:
    ORB Test Hanson
    ajax异步传输中的乱码问题
    调用淘宝API遇到的问题
    doc命令查看电脑配置大全
    从关联数组中取得键名
    php图片上传
    doc命令查看电脑配置
    一个空间配置多个虚拟主机
    淘客网站中系统信息获取
    opendir(path,context)
  • 原文地址:https://www.cnblogs.com/lee0oo0/p/2471100.html
Copyright © 2011-2022 走看看