调用系统相机:

/*** * 启动拍照 */private void capture(){Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);       // 获取文件        File  file=new File(tempPicPath);        //拍照后原图回存入此路径下        intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(file));        startActivityForResult(intent, 1);  }

private String tempPicPath = "/mnt/sdcard/temp.jpg" ;

拍照完成之后的图片保存在sdcard中的temp.jpg,这个图片是没有水印的。

拍照回调时将图片生成bitmap,可以使用bitmap来添加水印:

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);//调用拍照之后返回的信息        if (resultCode == Activity.RESULT_OK) {         //        Toast.makeText(this, "拍照成功", Toast.LENGTH_LONG).show();         bm = BitmapFactory.decodeFile(tempPicPath) ;
        createDialog() ;        }else{//        Toast.makeText(this, "拍照不成功", Toast.LENGTH_LONG).show();         }}

其中:

//弹出对话框,是否保存图片private void createDialog(){Builder builder = new Builder(this) ;builder.setTitle("请输入图片名称") ;View view = LayoutInflater.from(this).inflate(R.layout.dialog_save_pic, null) ;editFileName = (EditText) view.findViewById(R.id.editText_pic_name) ;btnSave = (Button) view.findViewById(R.id.button_save) ;btnCancel = (Button) view.findViewById(R.id.button_cancel) ;builder.setView(view) ;btnSave.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {String name = editFileName.getText().toString().trim() ;if(name != null && name.length() > 0){//保存图片savePic(name) ;Toast.makeText(getApplicationContext(), "保存成功", 0).show() ;dialog.dismiss() ;}else{Toast.makeText(getApplicationContext(), "请输入图片名称后,再保存", 0).show() ;}}}) ;

/** * 保存图片 * @param name */private void savePic(String name){File rootFile = new File(MConstent.unuploadPicDir) ;if(!rootFile.exists()){rootFile.mkdirs() ;}File file = new File(MConstent.unuploadPicDir + "/" + name + ".jpg") ;try {FileOutputStream fos = new FileOutputStream(file) ;//FileInputStream fis = new FileInputStream(new File(tempPicPath)) ;byte[] temp = new byte[1024] ;//添加时间水印Bitmap newbm = addTimeFlag(bm) ;newbm.compress(Bitmap.CompressFormat.JPEG, 100, fos);// 把数据写入文件 fos.flush() ;fos.close() ;} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/** * 添加时间水印 * @param bm */private Bitmap addTimeFlag(Bitmap src){ // 获取原始图片与水印图片的宽与高          int w = src.getWidth();          int h = src.getHeight();          Bitmap newBitmap = Bitmap.createBitmap(w, h, Config.ARGB_8888);          Canvas mCanvas = new Canvas(newBitmap);          // 往位图中开始画入src原始图片          mCanvas.drawBitmap(src, 0, 0, null);         //添加文字        Paint textPaint = new Paint();          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");          String time = sdf.format(new Date(System.currentTimeMillis()));          textPaint.setColor(Color.RED) ;        textPaint.setTextSize(100);         String familyName = "宋体";  //        Typeface typeface = Typeface.create(familyName,  //                Typeface.BOLD_ITALIC);  //        textPaint.setTypeface(typeface);  //        textPaint.setTextAlign(Align.CENTER);                  mCanvas.drawText(time, (float)(w*1)/7, (float)(h*14)/15, textPaint);         mCanvas.save(Canvas.ALL_SAVE_FLAG);          mCanvas.restore();          return newBitmap ;}





更多相关文章

  1. Android有效解决加载大图片内存溢出问题及优化虚拟机内存
  2. android在处理一写图片资源的时候,会进行一些类型的转换,现在有空
  3. android 将图片通过base64转换为String 将图片String转换为Bitma
  4. 背景图片显示问题 图片显示错误 android开发
  5. Android(安卓)从缓存中读取图片并异步加载的类[转]
  6. Android学习之路四:ImageView
  7. button imageButton 背景透明
  8. Android(安卓)Shader应用开发之雷达扫描效果
  9. Android(安卓)图片的加载与保存

随机推荐

  1. Android常见开源解决方案
  2. android Animation动画的xml使用
  3. Android疑难 —隐式Intent匹配原则、Andr
  4. Android的IPC机制Binder
  5. 使用openFileInput和openFileOutput实现A
  6. Android的ViewFlipper与GestureDetector
  7. Android之四大组件、六大布局、五大存储
  8. android application学习
  9. 越过Android中布局文件中使用onClick属性
  10. Android仿美团分类下拉菜单实例代码