zoukankan      html  css  js  c++  java
  • Android进阶篇图片选择功能

    在开发过程中,我们一般会碰到图片选择功能。

    它包括两部分:一个是通过直接调用系统的相册获取,一个是通过系统相机拍照获取。

    public class SelectImageUtil {
        private static final String TAG = SelectImageUtil.class.getSimpleName();
        
        private Context mContext;
        private Intent mData;
        
        public SelectImageUtil(Context context,Intent data){
            mContext = context;
            mData = data;
        }
        
        /**
         * 处理系统相册图片
         */
        public String doPhotoPic(){
            Bitmap bm = null;
            ContentResolver resolver = mContext.getContentResolver();
            String path = "";
            
            try {
                Uri originalUri = mData.getData(); 
                bm = MediaStore.Images.Media.getBitmap(resolver, originalUri); 
                String[] proj = {MediaStore.Images.Media.DATA};
                Cursor cursor = ((Activity)mContext).managedQuery(originalUri, proj, null, null, null);
                int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                cursor.moveToFirst();
                path = cursor.getString(column_index);
                LogUtil.info(TAG, "path= " + path);
            }catch (IOException e) {
                LogUtil.error(TAG,e.toString());
            }
            return path;
        }
        
        /**
         * 处理系统相机图片
         */
        public String doCameraPic(){
            String sdStatus = Environment.getExternalStorageState(); 
            if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { 
                return ""; 
            } 
            
            Bundle bundle = mData.getExtras(); 
            Bitmap bitmap = (Bitmap) bundle.get("data");
            FileOutputStream b = null; 
            
            File file = new File(Constant.Common.YOUJIAOPIC_PATH); 
            if(!file.exists()){
                file.mkdirs();
            }
            String fileName = Constant.Common.YOUJIAOPIC_PATH + "/" + DateUtil.getYearMonthDay() + ".png"; 
            try { 
                b = new FileOutputStream(fileName); 
                bitmap.compress(Bitmap.CompressFormat.PNG, 100, b);// 把数据写入文件 
            } catch (FileNotFoundException e) { 
                e.printStackTrace(); 
            } finally { 
                try { 
                    b.flush(); 
                    b.close(); 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                } 
            }
            return fileName;
        }
    }
        // 从本地SD卡获取图片
        private void getPicForSDCard() {
            publish_PicLayout.setVisibility(View.GONE);
            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.addCategory(Intent.CATEGORY_OPENABLE);
            intent.setType("image/*");
            intent.putExtra("return-data", true);
            startActivityForResult(intent, 0);
        }
    
        // 调用系统的相机获取图片
        private void setToCamera() {
            publish_PicLayout.setVisibility(View.GONE);
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(intent, 1);
        }
  • 相关阅读:
    原型设计工具比较及实践
    原型设计工具比较及实践
    原型设计工具比较及实践
    原型设计工具比较及实践
    原型设计工具比较及实践
    原型设计工具比较及实践
    原型设计工具比较及实践
    软件工程基础大作业感想
    博客园里留下你的成长足迹
    软件工程培训—粗读《构建之法》
  • 原文地址:https://www.cnblogs.com/gongcb/p/2647132.html
Copyright © 2011-2022 走看看