在android中的图像上写文本

时间:2014-12-24 12:05:40

标签: android image-capture

在Android应用程序中我有使用自定义相机视图的照片捕获功能。我正在使用SurfaceHolder.Callback并能够捕获图像。但现在我想在捕获的图像上显示一些文本。 这该怎么做。 下面是我的代码 -

preview.camera.takePicture(shutterCallback, rawCallback, jpegCallback);

和回调方法 -

 PictureCallback jpegCallback = new PictureCallback() {
        public void onPictureTaken(byte[] data, Camera camera) {
            FileOutputStream outStream = null;
            long time = 0;
            try {
                new File(filePath).createNewFile();
                outStream = new FileOutputStream(filePath);
                outStream.write(data);
                captureBtn.setVisibility(View.GONE); 
                preview.shutdownCamera();
                preview.setVisibility(View.GONE);
                outStream.close();

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
            }
            Log.d(TAG, "onPictureTaken - jpeg");
        }
    };

EDITED

我认为我的问题不明确,我想在拍摄的图片上添加水印。请帮忙。

3 个答案:

答案 0 :(得分:0)

Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint(); 
paint.setColor(Color.BLACK); 
paint.setTextSize(20); 
canvas.drawText("Some Text", 10, 25, paint); 

答案 1 :(得分:0)

检查此代码: 首先在父布局中添加ImageViewTextView,然后在其中设置图像。

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(result.getWidth(), result.getHeight());
imgPreview.setLayoutParams(layoutParams);

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(result.getWidth(), result.getHeight());
txtPreview.setLayoutParams(params);

然后在父布局中添加它(rlPreview是父布局):

txtPreview.setText("Enter text which you want to display in image");
txtPreview.setTextSize(5.0f);
rlPreview.addView(imgPreview);
rlPreview.addView(txtPreview);

然后,执行此操作以创建包含文本的图像:

rlPreview.setDrawingCacheEnabled(true);
Bitmap bitmapWithWaterMark = Bitmap.createScaledBitmap( rlPreview.getDrawingCache(), rlPreview.getWidth(), rlPreview.getHeight(), true);
rlPreview.setDrawingCacheEnabled(false);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
Bitmap bmp = bitmapWithWaterMark.compress(Bitmap.CompressFormat.PNG, 0, bytes);

你去!你有带文字的图像。

答案 2 :(得分:0)

您可以使用此布局显示图像:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<ImageView
    android:id="@+id/image"
    android:layout_width="fill_parent"
    android:layout_height="250dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:scaleType="fitXY"
    android:src="@drawable/ic_launcher" />

<TextView
    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_marginTop="20dp"
    android:layout_centerHorizontal="true" />

</RelativeLayout>

显示图像后,您可以设置所需的任何文本。