将 EditText 和 ImageView 合并为单个图像(位图)?

Merge EditText and ImageView as a single Image (Bitmap)?

我有一个 ImageView 和一个 EditText 放在 ImageView。我希望 EditText 上的书面文本作为单个图像(位图)成为 ImageView 的一部分,因为它正在写入时正在显示。我试过使用 canvas.drawText(...) 但在编写时无法获得准确的外观。

更新:: 已解决...下面的答案

一旦我做了类似的东西,你正在尝试。我使用 Textview 来做到这一点。我把它的背景资源和文字分开设置了。

//for image
 int pos = imageList[mPosition];//integer array keeps r.mipmap.x
 tvShare.setBackgroundResource(pos);

//for text you can change settings
 tvShare.setTypeface(null, Typeface.NORMAL);
 tvShare.setGravity(Gravity.CENTER);

//how I converted it to bitmap
Bitmap image;

image = loadBitmapFromView(tvShare,getApplicationContext());

这是我解决这个问题的方法。如果我想要的图像是这样的:

那么解决方案将是:

    /**
 * Merging Two Images into One Image.
 * @param baseImage Bitmap as Lower Image , Image to be appeared underneath.
 * @param headerImage Bitmap as Upper Image, Image to be appeared upon the lower image.
 * @return finalImage Bitmap as bytes having both images merged.
 */
public static byte[] mergeImages(Bitmap baseImage, Bitmap headerImage, Bitmap footerImage ) {
    Bitmap finalImage = Bitmap.createBitmap(baseImage.getWidth(), baseImage.getHeight(), baseImage.getConfig());
    Canvas canvas = new Canvas(finalImage);
    canvas.drawBitmap(baseImage, new Matrix(), null);

    if(headerImage != null){
        canvas.drawBitmap(headerImage, new Matrix(), null);
    }


    if(footerImage != null){
        Matrix matrix = new Matrix();
        matrix.setTranslate(0, baseImage.getHeight() - footerImage.getHeight());
        canvas.drawBitmap(footerImage, matrix, null);
    }


    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    finalImage.compress(Bitmap.CompressFormat.PNG, 100, stream);
    byte[] bytes = stream.toByteArray();

    return bytes;
}