对于一个项目,要求我们重新创建与收到的pdf相同的QR码。
我设法做到了几乎相同,但找不到解决方案。这是我们需要重新创建的QR码(我已经添加了红色箭头)。
您几乎每次都会看到少一个像素,而在另一个地方则多一个像素。这是我的QR码,但我没有遗漏任何像素。
我正在使用boofcv库,这是我的代码
QrCode qr = new QrCodeEncoder().setError(QrCode.ErrorLevel.M).setMask(QrCodeMaskPattern.M111).setVersion(1).addBytes("E-ALPZNUP").fixate();
QrCodeGeneratorImage render = new QrCodeGeneratorImage(42);
render.render(qr);
BufferedImage buffimage = ConvertBufferedImage.convertTo(render.getGray(),null);
如果某人对另一个库有相同的解决方案,那么我可以接受它。
答案 0 :(得分:1)
我知道麻烦您为什么要生成完全相同的QR码不是我的事,但是我的猜测是原始图片的“多余”和“缺失”像素是由于JPEG编码图片。我知道它在PNG中,但也许在生成之后就被编码为JPEG,然后又返回到PNG。 当像素出现时根本没有图案,因此必须有某种随机或模糊的东西将其添加到第一张图像中。 另外,这是他们添加到原始QR上的某种签名,以标识它是由特定机构合法生成的。
从阅读的角度来看,它们完全相同,并且两个QR码将提供相同的输出。
答案 1 :(得分:0)
您可能可以尝试免费Spire.Barcode for Java 和以下代码:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.spire.barcode.BarCodeGenerator;
import com.spire.barcode.BarCodeType;
import com.spire.barcode.BarcodeSettings;
import com.spire.barcode.QRCodeECL;
import com.sun.javafx.print.Units;
public class QR_Code {
public static void main(String[] args) throws IOException {
//create an instance of BarcodeSetteings
BarcodeSettings settings = new BarcodeSettings();
//set barcode type
settings.setType(BarCodeType.QR_CODE);
//set barcode data
settings.setData("ABC 123456789");
//set dispaly text
settings.setData2D("ABC 123456789");
//show text on bottom
settings.setShowTextOnBottom(true);
//set the border invisible
settings.hasBorder(false);
//set width of the barcode module
settings.setX(2);
//set the error correction level
settings.setQRCodeECL(QRCodeECL.M);
//create BarCodeGenerator object based on settings
BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);
//generate image data and store in BufferedImage instance
BufferedImage bufferedImage = barCodeGenerator.generateImage();
//save to image
ImageIO.write(bufferedImage,"png",new File("QR_CODE.png"));
System.out.println("Complete!");
}
}
的代码副本