结合图像和文本进行打印

Combine Image and Text to print them

我想创建一个 .png 来打印它。该文件应具有此布局 (100x35mm)

我使用 Zxing 项目创建了 QrCode。

 public Bitmap createQrCode(String stringForQrCode){
    com.google.zxing. MultiFormatWriter writer =new MultiFormatWriter();

    String data = stringForQrCode;
    String finaldata = Uri.encode(data, "utf-8");

    BitMatrix bm = null;
    try {
        bm = writer.encode(finaldata, BarcodeFormat.QR_CODE,185, 185);
    } catch (WriterException e) {
        e.printStackTrace();
    }
    Bitmap ImageBitmap = Bitmap.createBitmap(185, 185, Bitmap.Config.ARGB_8888);

    for (int i = 0; i < 185; i++) {//width
        for (int j = 0; j < 185; j++) {//height
            assert bm != null;
            ImageBitmap.setPixel(i, j, bm.get(i, j) ? Color.BLACK: Color.WHITE);
        }
    }
    return ImageBitmap;
}

但是我怎样才能将这些图像与我的两个字符串结合起来。我必须创建一个新的位图吗?以及我如何选择不同项目的位置。

首先创建图像和文本父视图的位图

public static Bitmap loadBitmapFromView(View v) {
    Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);                
    Canvas c = new Canvas(b);
    v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
    v.draw(c);
    return b;
}

现在将此位图转换为您想要的任何格式

我通过从所需视图创建位图解决了这个问题。因此,我创建了一个包含我的二维码和两个字符串的视图。但是我没有显示视图,而是将其设置为 invisible 并使用以下代码创建和保存位图。

public static Bitmap getBitmapFromView(View view, int width, int height) {
        Bitmap returnedBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(returnedBitmap);
        Drawable bgDrawable =view.getBackground();
        if (bgDrawable!=null) {
            bgDrawable.draw(canvas);
        } else {
            canvas.drawColor(Color.WHITE);
        }
        view.draw(canvas);
        return returnedBitmap;
    }