/***
* 启动拍照
*/
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来添加水印:
@Override
protected 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() {
@Override
public 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 block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.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 ;
}
转自 :https://blog.csdn.net/u011138654/article/details/53296700#commentBox