版权声明:注明转载出处 https://blog.csdn.net/qq_38629981/article/details/82910762
1、拍照
// 非空判断 拍照
if (mCamera0 != null){
mCamera0.takePicture(null, null, jpeg0); // 1 front
}
2、创建JPEG数据回调
// 创建JPEG图片回调数据对象
public static PictureCallback jpeg0 = new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
try {
// 获得图片
Bitmap mBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
//添加时间水印
Bitmap mTimeWatermark = AddTimeWatermark(mBitmap);
// 判断文件夹是否存在,传入图片存储路径
CreateFile(StaticVariables.mPicPath);
String mPath = StaticVariables.mPicPath + System.currentTimeMillis()+".jpeg"; //临时测试命名
File mFile = new File(mPath);
BufferedOutputStream mOutputStream = new BufferedOutputStream(new FileOutputStream(mFile));
// 将图片压缩到流中
mTimeWatermark.compress(Bitmap.CompressFormat.JPEG,100,mOutputStream); //时间水印
mOutputStream.flush();
mOutputStream.close();
// 停止预览
mCamera0.stopPreview();
mCamera0.release();
mCamera0 = Camera.open(4);
Parameters parameters = mCamera0.getParameters();
// parameters.setPreviewSize(width, height);
mCamera0.setParameters(parameters);
mCamera0.setDisplayOrientation(0);
mCamera0.setPreviewTexture(mTextureView0.getSurfaceTexture());
// 处理完数据之后预览
mCamera0.startPreview();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
3、添加时间水印:AddTimeWatermark(mBitmap);
/**
* 添加时间水印
* @param mBitmap
* @return mNewBitmap
*/
private static Bitmap AddTimeWatermark(Bitmap mBitmap) {
//获取原始图片与水印图片的宽与高
int mBitmapWidth = mBitmap.getWidth();
int mBitmapHeight = mBitmap.getHeight();
Bitmap mNewBitmap = Bitmap.createBitmap(mBitmapWidth, mBitmapHeight, Bitmap.Config.ARGB_8888);
Canvas mCanvas = new Canvas(mNewBitmap);
//向位图中开始画入MBitmap原始图片
mCanvas.drawBitmap(mBitmap,0,0,null);
//添加文字
Paint mPaint = new Paint();
String mFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());
//String mFormat = TingUtils.getTime()+"\n"+" 纬度:"+GpsService.latitude+" 经度:"+GpsService.longitude;
mPaint.setColor(Color.RED);
mPaint.setTextSize(20);
//水印的位置坐标
mCanvas.drawText(mFormat, (mBitmapWidth * 1) / 10,(mBitmapHeight*14)/15,mPaint);
mCanvas.save(Canvas.ALL_SAVE_FLAG);
mCanvas.restore();
return mNewBitmap;
}
4、创建文件夹
// 创建 文件夹
public static void CreateFile(String path) {
File destDir = new File(path);
if (!destDir.exists()) {
Log.i(TAG,"文件夹创建成功");
destDir.mkdirs();
} else {
Log.i(TAG,"文件夹已存在");
}
}
5、效果图