use of boofcv.alg.fiducial.qrcode.QrCodeGeneratorImage in project BoofCV by lessthanoptimal.
the class CreateQrCodeGui method renderPreview.
private void renderPreview() {
QrCodeEncoder encoder = new QrCodeEncoder();
if (controls.error != null) {
encoder.setError(controls.error);
}
if (controls.mask != null) {
encoder.setMask(controls.mask);
}
if (controls.version > 0) {
encoder.setVersion(controls.version);
}
if (controls.mode != null) {
switch(controls.mode) {
case NUMERIC:
encoder.addNumeric(controls.message);
break;
case ALPHANUMERIC:
encoder.addAlphanumeric(controls.message);
break;
case BYTE:
encoder.addBytes(controls.message);
break;
case KANJI:
encoder.addKanji(controls.message);
break;
default:
encoder.addAutomatic(controls.message);
break;
}
} else {
encoder.addAutomatic(controls.message);
}
boolean failed = false;
QrCodeGeneratorImage generator = new QrCodeGeneratorImage(10);
try {
generator.render(encoder.fixate());
} catch (RuntimeException e) {
failed = true;
System.err.println("Render Failed! " + e.getClass().getSimpleName() + " " + e.getMessage());
// e.printStackTrace();
}
if (failed) {
BufferedImage output = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = output.createGraphics();
g2.setColor(Color.RED);
g2.fillRect(0, 0, output.getWidth(), output.getHeight());
imagePanel.setImageRepaint(output);
} else {
GrayU8 gray = generator.getGray();
BufferedImage output = new BufferedImage(gray.width, gray.height, BufferedImage.TYPE_INT_RGB);
ConvertBufferedImage.convertTo(gray, output);
imagePanel.setImageRepaint(output);
}
}
use of boofcv.alg.fiducial.qrcode.QrCodeGeneratorImage in project BoofCV by lessthanoptimal.
the class CreateQrCodeDocumentImage method render.
public void render(java.util.List<QrCode> markers) {
for (int i = 0; i < markers.size(); i++) {
QrCodeGeneratorImage generator = new QrCodeGeneratorImage(moduleWidthPixels);
generator.render(markers.get(i));
String name;
String ext = FilenameUtils.getExtension(documentName);
if (ext.length() == 0) {
name = documentName + i + ".png";
} else {
if (markers.size() > 1) {
File f = new File(documentName);
String n = f.getName();
name = new File(f.getParentFile(), n.substring(0, n.length() - ext.length() - 1) + i + "." + ext).getPath();
} else {
name = documentName;
}
}
GrayU8 gray = generator.getGray();
BufferedImage tmp = new BufferedImage(gray.width, gray.height, BufferedImage.TYPE_INT_RGB);
ConvertBufferedImage.convertTo(gray, tmp);
BufferedImage output = new BufferedImage(gray.width + 4 * moduleWidthPixels, gray.height + 4 * moduleWidthPixels, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = output.createGraphics();
g2.setColor(Color.WHITE);
g2.fillRect(0, 0, output.getWidth(), output.getHeight());
g2.drawImage(tmp, moduleWidthPixels * 2, moduleWidthPixels * 2, tmp.getWidth(), tmp.getHeight(), null);
System.out.println("Saving " + name);
UtilImageIO.saveImage(output, name);
}
}
use of boofcv.alg.fiducial.qrcode.QrCodeGeneratorImage in project BoofCV by lessthanoptimal.
the class GenericQrCodeDetectorChecks method generateMarker.
private GrayF32 generateMarker() {
QrCodeGeneratorImage generator = new QrCodeGeneratorImage(4);
// generator.renderData = false;
generator.render(expected);
GrayU8 rendered = generator.getGray();
GrayU8 output = new GrayU8(rendered.width + 50, rendered.height + 50);
ImageMiscOps.fill(output, 255);
output.subimage(25, 25, output.width - 25, output.height - 25).setTo(rendered);
GrayF32 foo = new GrayF32(output.width, output.height);
ConvertImage.convert(output, foo);
return foo;
}
use of boofcv.alg.fiducial.qrcode.QrCodeGeneratorImage in project BoofCV by lessthanoptimal.
the class ExampleRenderQrCode method main.
public static void main(String[] args) {
// Uses a flow pattern to specify the QR Code. You can control all aspects of the QR
// like specifying the version, mask, and message types or let it select all of that for you.
QrCode qr = new QrCodeEncoder().setError(QrCode.ErrorLevel.M).addAutomatic("This is a Test ん鞠").fixate();
// NOTE: The final function you call must be fixate() that's how it knows its done
// QrCodeGenerator is the base class with all the logic and the children tell it how to
// write in a specific format. QrCodeGeneratorImage is included with BoofCV and is used
// to creates images
QrCodeGeneratorImage render = new QrCodeGeneratorImage(20);
render.render(qr);
// Convert it to a BufferedImage for display purposes
BufferedImage image = ConvertBufferedImage.convertTo(render.getGray(), null);
ShowImages.showWindow(image, "Rendered QR Code", true);
// You can also save it to disk by uncommenting the line below
// UtilImageIO.saveImage(image,"qrcode.png");
// WARNING! This rendered image lacks the white border which is required to be a compliant
// QR Code. As of this writing BoofCV's implementation might not be able to handle
// this image unless you add a white border.
}
Aggregations