如何在QR码图像底部添加自定义文字

时间:2016-08-28 13:25:18

标签: java zxing

zxing` lib用于在我的spring mvc应用程序中生成qr代码。他们很好地生成代码,现在我想要在qr图像底部的自定义文本。 例如---- enter image description here

我用过的图书馆。

<dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>javase</artifactId>
            <version>2.2</version>
        </dependency>

我使用的代码

 String charset = "UTF-8"; // or "ISO-8859-1"
                                Map hintMap = new HashMap();
                                hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
                                createQRCode(code,
                                        dirPath ,
                                        charset, hintMap, 200, 200);
public static void createQRCode(String qrCodeData, String filePath, String charset, Map hintMap, int qrCodeheight,
            int qrCodewidth) throws WriterException, IOException {
        BitMatrix matrix = new MultiFormatWriter().encode(new String(qrCodeData.getBytes(charset), charset),
                BarcodeFormat.QR_CODE, qrCodewidth, qrCodeheight, hintMap);
        MatrixToImageWriter.writeToFile(matrix, filePath.substring(filePath.lastIndexOf('.') + 1), new File(filePath));
    }

1 个答案:

答案 0 :(得分:0)

您可以在生成条形码图像后手动绘制文本:

var result = qrcoder.Write(inputData);

using (var g = Graphics.FromImage(result))
using (var font = new Font(FontFamily.GenericMonospace, 12))
using (var brush = new SolidBrush(Color.Black))
using(var format = new StringFormat(){Alignment = StringAlignment.Center})
{
    int margin = 5, textHeight = 20;

    var rect = new RectangleF(margin, result.Height - textHeight,
                              result.Width - 2 * margin, textHeight);

    g.DrawString(inputData, font, brush, rect, format);
}

result.Save(tempFileName);

您可以选择自己的字体大小和字体系列,从而更好地满足您的目标。

文本的位置由您要绘制的矩形(矩形)和format.Alignment属性确定