我有一个应用程序,它有自己的内置摄像头和camera2。 拍照后,它会向您显示带有时间戳的图像,以及它应该做什么。如何在拍摄的图像上显示时间戳,而不是带有时间戳的黑色屏幕。
这是我的代码。
@Override
public void onCaptureCompleted(@NonNull CameraCaptureSession session, @NonNull CaptureRequest request, @NonNull TotalCaptureResult result) {
super.onCaptureCompleted(session, request, result);
dest = Bitmap.createBitmap(500, 1000, Bitmap.Config.ARGB_8888);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateTime = sdf.format(Calendar.getInstance().getTime()); // reading local time in the system
Canvas cs = new Canvas(dest);
Paint tPaint = new Paint();
tPaint.setTextSize(35);
tPaint.setColor(Color.RED);
tPaint.setStyle(Paint.Style.FILL);
float pHeight = tPaint.measureText("yY");
cs.drawText(dateTime, 20f, pHeight+15f, tPaint);
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream(_pictureUri.getPath ());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
dest.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream);
Intent intent = new Intent (CameraActivity.this, CameraReviewPhotoActivity.class);
intent.putExtra (MediaStore.EXTRA_OUTPUT, _pictureUri);
startActivityForResult (intent, CameraActivity.Approved_Image);
}
需要其他任何东西让我知道。
但谢谢! :)
更新
我没有抓住图像,因此画布没有任何效果。我需要添加
Bitmap decodedBitmap = BitmapFactory.decodeFile (String.valueOf(file));
在顶部,然后
Bitmap bitmap = Bitmap.createBitmap(decodedBitmap, 0, 0, decodedBitmap.getWidth(), decodedBitmap.getHeight());
dest = bitmap.copy(Bitmap.Config.ARGB_8888, true);
Canvas cs = new Canvas(dest);