【问题标题】:add text over a barcode在条形码上添加文本
【发布时间】:2021-03-21 01:08:17
【问题描述】:

我正在尝试在条形码上添加文本。 在最后阶段,我想让条形码高度变小,并将文本放在条形码下方,但我坚持要添加文本。 我试着用 X,Y 开头,但没有运气。 我错过了什么?

            MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
            try {
                BitMatrix bitMatrix = multiFormatWriter.encode(finalLastID, BarcodeFormat.CODE_128, imageView.getWidth(), imageView.getHeight());
                Bitmap bitmap = Bitmap.createBitmap(imageView.getWidth(), imageView.getHeight(), Bitmap.Config.RGB_565);
                for (int i = 0; i < imageView.getWidth(); i++){
                    for (int j = 0; j < imageView.getHeight()-scriptTextHeight; j++){
                        bitmap.setPixel(i,j,bitMatrix.get(i,j)? Color.BLACK:Color.WHITE);
                    }

                }
                drawStringonBitmap(bitmap,"TEST", 0, 0, Color.RED, 60, 20, false, imageView.getWidth(), imageView.getHeight());
                imageView.setImageBitmap(bitmap);
            } catch (WriterException e) {
                e.printStackTrace();
            }

public static Bitmap drawStringonBitmap(Bitmap src, String string, int beginX, int beginY, int color, int alpha, int size, boolean underline, int width , int height) {

    Bitmap result = Bitmap.createBitmap(width, height, src.getConfig());

    Canvas canvas = new Canvas(result);

    Paint paint = new Paint();
    paint.setColor(color);
    paint.setAlpha(alpha);
    paint.setTextSize(size);
    paint.setAntiAlias(true);
    paint.setUnderlineText(underline);
    canvas.drawBitmap(src, 0, 0, null);
    canvas.drawText(string, beginX, beginY, paint);

    return result;

}

【问题讨论】:

    标签: android android-bitmap drawtext barcode-printing


    【解决方案1】:

    看起来你的代码流有一个缺陷,你使用你的 drawStringOnBitmap() 方法就像一个 void 方法,因为你没有对返回的位图做任何事情,所以我猜你的代码应该是这样的:

    bitmap = drawStringonBitmap(bitmap,"TEST", 0, 0, Color.RED, 60, 20, false, imageView.getWidth(), imageView.getHeight());
    

    那时。

    无法测试,但我猜:

    imageView.setImageBitmap(bitmap);
    

    应该设置正确的位图。

    【讨论】:

    • 我按照你的描述改变了函数调用,我认为你有一个观点。但问题出在 drawStringonBitmap() 函数中。我调试代码并检查canvas.drawText()之前和之后的“结果”位图并且是相同的
    • 也许您必须在绘制文本后使用修改后的 Canvas 创建一个新位图,然后将其返回
    【解决方案2】:

    在其下方创建一个条形码和文本视图,并将该视图作为位图,就像屏幕截图一样。

    public Bitmap getBitmapFromView(View view) {
        view.setDrawingCacheEnabled(true);
        Bitmap returnedBitmap = Bitmap.createBitmap(view.getDrawingCache());
        view.setDrawingCacheEnabled(false);
        Bitmap.createScaledBitmap(returnedBitmap, img.getWidth(), img.getHeight(), false);
        return returnedBitmap;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      • 2016-08-25
      • 1970-01-01
      • 2021-08-01
      相关资源
      最近更新 更多