java - 如何生成里面有logo的二维码?

标签 java android qr-code zxing

我正在为 Android 设备开发应用程序。 我想生成带有 Logo 的二维码。

使用 ZXing 我知道如何生成像这样的简单二维码: Original

但我想生成带有 Logo 的二维码。 所以我想得到这样的东西: With Logo

有什么办法吗? 我不知道该怎么做。 请问你能帮帮我吗?可能有一些现成的库或如何做的例子。

谢谢!

最佳答案

您可以将您的 Logo 添加为图像叠加层,例如

public BufferedImage getQRCodeWithOverlay(BufferedImage qrcode) 
{
    BufferedImage scaledOverlay = scaleOverlay(qrcode);

    Integer deltaHeight = qrcode.getHeight() - scaledOverlay.getHeight();
    Integer deltaWidth  = qrcode.getWidth()  - scaledOverlay.getWidth();

    BufferedImage combined = new BufferedImage(qrcode.getWidth(), qrcode.getHeight(), BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2 = (Graphics2D)combined.getGraphics();
    g2.drawImage(qrcode, 0, 0, null);
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, overlayTransparency));
    g2.drawImage(scaledOverlay, Math.round(deltaWidth/2), Math.round(deltaHeight/2), null);
    return combined;
}

private BufferedImage scaleOverlay(BufferedImage qrcode)
{
    Integer scaledWidth = Math.round(qrcode.getWidth() * overlayToQRCodeRatio);
    Integer scaledHeight = Math.round(qrcode.getHeight() * overlayToQRCodeRatio);

    BufferedImage imageBuff = new BufferedImage(scaledWidth, scaledHeight, BufferedImage.TYPE_INT_ARGB);
    Graphics g = imageBuff.createGraphics();
    g.drawImage(overlay.getScaledInstance(scaledWidth, scaledHeight, BufferedImage.SCALE_SMOOTH), 0, 0, new Color(0,0,0), null);
    g.dispose();
    return imageBuff;
}

请引用这个post & github了解更多信息

关于java - 如何生成里面有logo的二维码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35104305/

相关文章:

java - 无法解析符号 'getDefaultAdapter()' ?

java - 我厌倦了 JButtons,如何在 java 中制作更好的 GUI?

java - 将 Google Guava 添加到 Android 项目 - 显着减慢构建速度

android - 具有空值的 MPAndroidChart

java - Android Studio : HorizontalView

ios - 使用两个字符串生成并读取 QR

java - 多线程程序无法运行

java - Executebatch 无法仅在数据库中插入最后一行

javascript - 是否有一些库可用于 IQR 代码(不是 QR 代码)?

android - 通过集成到您的应用程序中的 ZXing 获取 QR 扫描结果