Generate 2D bar code (e.g. QR Code, Data Matrix, PDF417) on iPhone and Android
I need a library to generate a 2D bar code on iPhone and Android (and preferably WM7 and possibly j2me too) - the idea is to transfer information to another device with a corresponding scanner (decoder). What are the good options?
ZXing is an option, in particular for the reading/decoding aspect, but I want to generate t开发者_StackOverflow中文版hem on these devices.
Best option should be ZXing's library. I'm not sure about the Windows Phone 7 support tho.
I tried all solutions described above with no success, but then found this library: akopanev-iOS-QR-Code-Encoder
Open-source, simple to implement, has sample xcode project, works great
author - Andrew Kopanev
zxing will work for Android. The Java encoder hasn't been ported to C++ (feel free to jump in and contribute ... shouldn't be that hard.) Until that happens, I've been using the psytec encoder (http://groups.google.com/group/zxing/msg/27e421daeb510d0f). The comments are in Japanese, but it's pretty straightforward.
I don't have anything to add on WM7. Is that C#? There is a C# port of zxing but I don't know of anyone actively maintaining it and don't know if it includes an encoder.
I have been using ZXING to encode QR barcodes successfully. However, at least with the current version, it appears to have limited support for encoding other symbologies (ex: PDF-417).
I use the following code snippet:
// Encode the bitmap and display it on the screen
try {
// This will produce a 150x150 QR Barcode and display it on the screen.
Bitmap bm = encodeAsBitmap(barcodeContentString, BarcodeFormat.QR_CODE, 150, 150);
if(bm != null) {
barcodeImage.setImageBitmap(bm);
}
}
catch (WriterException e) { ... }
In this example, the "barcodeContentString" is the data that is being encoded. The "barcodeImage" is a standard ImageView.
I don't show it here, but I turn the screen on for the entire length of time that the barcode is displayed. As such, I am able to successfully scan the barcode with a QR compatible barcode scanner.
If you are going to transfer to another device online, then you might want to use a 3rd party QR code API to get the image. Making a call to an REST API is the best option of cross-platform mobile apps.
This API does it for URI's: http://www.tag.cx/qr-codes/
You could also host your own private QR code generator API.
Here is another Java version: http://qrcode.sourceforge.jp/
Summary--"This project develops and distributes QR Code decode/encode library under GPL v2. The project goal is Utilize QR Code embedded information for programmable devices all over the world. QR Code is the industrial standard, JIS-X-0510 and ISO/IEC18004."
Also check out (I couldn't post these because stackoverflow prevented more than one url): And a .net version (as listed on the site above): http://www.codeproject.com/KB/cs/qrcode.aspx
Also check out (I couldn't post these because stackoverflow prevented more than one url): A python version (as listed on the site above): http://pyqrcode.sourceforge.net/
I might be too late to help you in any way, but I have found a good SDK for Data Matrix codes. More instructions are on their website HERE, but to provide the code here as well, you'd do something like this:
OBLinear *pLinear = [OBLinear new];
[pLinear setNBarcodeType: OB_CODE128A];
[pLinear setPDataMsg: [[NSString alloc] initWithString:@"AB"]];
//[pLinear setPSupData: [[NSString alloc] initWithString:@"14562"]];
[pLinear setFX: USER_DEF_BAR_WIDTH];
[pLinear setFY: USER_DEF_BAR_HEIGHT];
[pLinear setFLeftMargin:USER_DEF_LEFT_MARGIN];
[pLinear setFRightMargin:USER_DEF_RIGHT_MARGIN];
[pLinear setFTopMargin:USER_DEF_TOP_MARGIN];
[pLinear setFBottomMargin:USER_DEF_BOTTOM_MARGIN];
[pLinear setNRotate:OB_Rotate0];
UIFont *pTextFont = [UIFont fontWithName: @"Arial" size: 8.0f];
[pLinear setPTextFont: pTextFont];
[pLinear drawWithView:self.view];
精彩评论