我正在使用下一个代码获取图片:
public void foto(View v) {
nom_foto = Environment.getExternalStorageDirectory()+ aptr.ruta_temp + cuadrilla + "/" + medidor + "_"+ cont_foto + ".jpg";
File arch = new File(Environment.getExternalStorageDirectory()+ aptr.ruta_temp+ cuadrilla);
if (!arch.exists())
arch.mkdirs();
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
int code = TAKE_PICTURE;
Uri output = Uri.fromFile(new File(nom_foto));
intent.putExtra(MediaStore.EXTRA_OUTPUT, output);
startActivityForResult(intent, code);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == TAKE_PICTURE) {
ImageView iv = (ImageView) findViewById(R.id.minifoto);
if (resultCode == RESULT_OK) {
new MediaScannerConnectionClient() {
private MediaScannerConnection msc = null;
{
msc = new MediaScannerConnection(getApplicationContext(), this);
msc.connect();
}
public void onMediaScannerConnected() {msc.scanFile(nom_foto,null);
}
public void onScanCompleted(String path, Uri uri)
{ msc.disconnect();}};
Toast.makeText(usuario_lectura.this,"Foto N° " + cont_foto + " agregada correctamente", Toast.LENGTH_LONG).show();
cont_foto++;
iv.setVisibility(View.VISIBLE);
iv.setImageBitmap(BitmapFactory.decodeFile(nom_foto));
}
}
if (resultCode == RESULT_CANCELED) {
File file = new File(nom_foto);
if (file.exists())
file.delete();
}
}
}
一切正常,图片已正确拍摄并保存在SD卡上......但是,我必须添加一个水印,包括日期......如何添加它?,相机活动不给我这些选择......
答案 0 :(得分:0)
要从相机为图像添加文字或图形水印,您必须打开图片,在Canvas
中使用Paint/Graphics
叠加层进行编辑,然后将其重新编码为。 jpg图像,并将其重新保存为SD卡上的文件。您可以从相机保存原始文件。所有这些步骤都相当简单。
大多数设备无法在单个位图中打开相机中的全尺寸图像。没有足够的堆内存可用。因此,您必须使用比例因子inSampleSize
来打开图像。因此,水印图像将永远小于相机原件的某些因素。
我认为没有办法绕过这个问题:(