照片上的文字(日期)邮票

时间:2012-01-28 14:04:58

标签: android date camera photo

是否可以合并从相机拍摄的文字和照片? 我想在照片上盖章日期和时间,但我在谷歌上找不到任何东西。

2 个答案:

答案 0 :(得分:7)

使用以下代码来达到您的要求。

        Bitmap src = BitmapFactory.decodeResource(getResources(), R.drawable.cuty); // the original file is cuty.jpg i added in resources
        Bitmap dest = Bitmap.createBitmap(src.getWidth(), src.getHeight(), 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.BLUE);
        tPaint.setStyle(Style.FILL);
        cs.drawBitmap(src, 0f, 0f, null);
        float height = tPaint.measureText("yY");
        cs.drawText(dateTime, 20f, height+15f, tPaint);
        try {
            dest.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(new File("/sdcard/timeStampedImage.jpg")));
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

您必须在清单文件中使用以下权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

如果您有任何疑问,请随时提出。我在图像的左上角添加了时间戳,您可以将其更改为图像上的任何位置。

对于我的设备,路径为 / sdcard 以访问外部SD卡,它可能因其他设备而异。某些设备可能有 / mnt / sdcard 可能是内部SD卡。在使用此代码段之前,请检查它。

答案 1 :(得分:2)

  • 使用方法decodeByteArray
  • 从JPEG图片回调中获取byte []数组中的位图对象
  • 使用您在上面创建的位图
  • 创建画布对象
  • 使用画布对象上的方法drawText在照片上书写文字。