Home Contact Sitemap Todo Money

Alan K Holden

Accomplished Internaut

QR Code generation from OpenBD

QR Code generation from OpenBD

There are blogs which discuss code generation using Adobe ColdFusion (ACF), and the Railo version of open-source CFML.

Here is a note to myself on QR Code generation using the zxing Java library with the OpenBD version of open-source CFML.

First, you'll need to place zxing resource Java (zxing_core.jar and zxing_javase.jar*) into the /lib folder of OpenBD's WEB-INF directory.  Then restart your J2EE container (Tomcat in my case) so that the new classes are registered with OpenBD. After that, it's just a matter of using ColdFusion's built in hook to all things Java: the wonderful createObject() function.

Here's the starting snippets you'll need to generate QR Codes:

<cfset origText = "http://www.akh.com" />
<!--- create the java object --->
<cfset BarcodeFormat = createObject('java','com.google.zxing.BarcodeFormat')>
<cfset writer = createObject('java','com.google.zxing.qrcode.QRCodeWriter').init()>
<!--- generate the QR matrix of origText --->
<cfset bitMatrix = writer.encode( origText, BarcodeFormat.QR_CODE, 200, 200 )>
<!--- convert matrix to an image --->
<cfset converter = createObject('java','com.google.zxing.client.j2se.MatrixToImageWriter')>
<cfset buff = converter.toBufferedImage( bitMatrix ) />
<cfset img = ImageNew( buff ) />
<!--- write image to disk --->
<cfset imageWrite(img,'#expandPath('./')#/foo.png','100',true) />
<cfoutput>
    #origText#
    <br />
    <img src="./foo.png" />
</cfoutput>

 

This version just creates an actual image file and then displays it. In production, you may want to store the image in a database or just stream it stright to the browser behind a cfcontent tag, which qualifies your new method to be called directly from the src attribute of a HTML img tag!

* You can compile your own jar files using the zxing library source, or pull some compiled copies out of the example zip available at the Railo blog,

Comments

Post a Comment

Required Field

My Details
Subscription Settings

Hear about status updates or new posts.