【问题标题】:QR codes image generator in java (open source but no GPL)java中的二维码图像生成器(开源但没有GPL)
【发布时间】:2010-11-11 08:47:04
【问题描述】:

我正在寻找Java(J2SE)中的开源二维码图像生成器组件,但开源许可证不能是GPL许可证(需要包含在封闭源项目中)。

顺便说一句,我无法从该项目访问网络,因此没有 Google API。

【问题讨论】:

    标签: java encode qr-code


    【解决方案1】:

    ZXing是一个用Java实现的开源、多格式一维/二维条码图像处理库。 它是根据 Apache 许可 发布的,因此它允许使用源代码来开发专有软件以及免费和开源软件。

    【讨论】:

    • 不生成二维码。它只扫描它们。
    • 在他们的二维码生成器网络应用示例中,他们使用code.google.com/apis/chart/types.html#qrcodes 生成二维码。
    • 我无法从项目访问网络,所以没有谷歌 API 或网络服务。
    • 然而,他们确实已经完成了二维码生成器的实现——不是二维码图像生成器。所以你可以试试这个项目。
    • 否,该项目既有用于生成二维码的 GWT 前端(使用 Google Chart Server 进行实际图像生成),也有一个可以嵌入的原生 Java 二维码生成器。
    【解决方案2】:

    Mercer - 不,库中也有一个编码器。 com.google.zxing.qrcode.encoder。除了使用 Google Chart API 的示例网络应用程序之外,我们还提供了该应用程序

    【讨论】:

    • 好的,谢谢!我只需要使用 qrCode.getMatrix().getArray(); 创建一个图像
    • 如果其他人这样做,这是基本思想。使用 Encoder.encode() 来“填写”新实例化 QRCode 的详细信息。然后按照上面的建议从 QRCode.getMatrix().getArray() 获取 byte[][] 。每行字节似乎是 QRCode 的一行像素,每个字节为零或一。此时,您可以将像素绘制到 BufferedImage 或用它制作 Raster 或其他东西将其转换为 AWT 图像。
    • ...或使用提供的类 MatrixToImageWriter 为您完成所有这些!
    【解决方案3】:

    MatrixToImageWriter 使用 BitMatrix,而不是 QRCode.getMatrix 返回的 ByteMatrix。通过查看android源代码,我发现了以下概念证明解决方案:

        try {
            MultiFormatWriter writer = new MultiFormatWriter();    
            Hashtable hints = new Hashtable();
            hints.put( EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.Q );            
            MatrixToImageWriter.writeToFile( writer.encode( "hello world", BarcodeFormat.QR_CODE, 800, 800, hints ),
                                             "png", new File( "/tmp/qrcode.png" ) );
        } catch ( Exception e ) {
            System.out.println( "failure: " + e );
        }
    

    顺便说一句,在 API 中使用 Hashtable 并不干净。请使用地图。反正没有多少人还在使用 Hashtable,你应该几乎总是使用 HashMap 来代替(除了少数用例)。

    【讨论】:

    • 回应我刚才看到的这个很老的评论:它使用Hashtable 来兼容J2ME,它没有Map。但是自从 v2.0 对 J2ME 的支持被删除并且 API 采用了Map
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    相关资源
    最近更新 更多