Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kenglxn/QRGen

a simple QRCode generation api for java built on top ZXING
https://github.com/kenglxn/QRGen

Last synced: 2 months ago
JSON representation

a simple QRCode generation api for java built on top ZXING

Awesome Lists containing this project

README

        

[![Build Status](https://travis-ci.org/kenglxn/QRGen.png?branch=master)](https://travis-ci.org/kenglxn/QRGen)
[![Release](https://img.shields.io/github/tag/kenglxn/QRGen.svg?label=JitPack)](https://jitpack.io/#kenglxn/QRGen)

### QRGen: a simple QRCode generation api for java built on top ZXING

Please consider [sponsoring](https://github.com/sponsors/kenglxn) the work on QRGen

#### Dependencies:

ZXING: http://code.google.com/p/zxing/

#### Get it:

QRGen consists of three modules: ```core```, ```javase``` and ```android```.

As of 2.1.0 QRGen is available from [jitpack.io](https://jitpack.io/#kenglxn/QRGen). QRGen is no longer deployed to maven central (ref: #61).
Older releases are available from [Maven Central Repository](http://search.maven.org/#browse%7C-852965118).

As of 3.0.1 java 11 is required.
Latest java 8 version is 2.7.0.

Maven:

```xml


jitpack.io
https://jitpack.io


```

Gradle:

```gradle
allprojects {
repositories {
// ...
maven { url "https://jitpack.io" }
}
}
```

##### Nexus proxy setup for jitpack

See https://github.com/jitpack/jitpack.io/issues/506 for solution.

(thanks to @LTheobald for the heads up)

#### Java Application

When developing a Java application you need to add ```javase``` module to your list of dependencies. The required ```core``` module will be added automatically by your build system:

Gradle:

```gradle
dependencies {
implementation 'com.github.kenglxn.QRGen:javase:3.0.1'
}
```

Maven:

```xml


com.github.kenglxn.QRGen
javase
3.0.1


```

##### Android

When you want to use QRGen inside your android application you need to add the ```android``` module to your list of dependencies. The required ```core``` module will be added automatically by your build system:

Gradle:

```gradle
dependencies {
implementation 'com.github.kenglxn.QRGen:android:3.0.1'
}
```

Maven:

```xml


com.github.kenglxn.QRGen
android
3.0.1


```

Or you can clone and build yourself:

```bash
git clone git://github.com/kenglxn/QRGen.git
cd QRGen/
mvn clean install
```

#### Usage:

```java
public class Demo {
public static void main(String[] args) {
// get QR file from text using defaults
File file = QRCode.from("Hello World").file();

// get QR stream from text using defaults
ByteArrayOutputStream stream = QRCode.from("Hello World").stream();

// override the image type to be JPG
QRCode.from("Hello World").to(ImageType.JPG).file();
QRCode.from("Hello World").to(ImageType.JPG).stream();

// override image size to be 250x250
QRCode.from("Hello World").withSize(250, 250).file();
QRCode.from("Hello World").withSize(250, 250).stream();

// override size and image type
QRCode.from("Hello World").to(ImageType.GIF).withSize(250, 250).file();
QRCode.from("Hello World").to(ImageType.GIF).withSize(250, 250).stream();

// override default colors (black on white)
// notice that the color format is "0x(alpha: 1 byte)(RGB: 3 bytes)"
// so in the example below it's red for foreground and yellowish for background, both 100% alpha (FF).
QRCode.from("Hello World").withColor(0xFFFF0000, 0xFFFFFFAA).file();

// supply own outputstream
QRCode.from("Hello World").to(ImageType.PNG).writeTo(new ByteArrayOutputStream());

// supply own file name
QRCode.from("Hello World").file("QRCode");

// supply charset hint to ZXING
QRCode.from("Hello World").withCharset("UTF-8");

// supply error correction level hint to ZXING
QRCode.from("Hello World").withErrorCorrection(ErrorCorrectionLevel.L);

// supply any hint to ZXING
QRCode.from("Hello World").withHint(EncodeHintType.CHARACTER_SET, "UTF-8");

// encode contact data as vcard using defaults
VCard johnDoe = new VCard("John Doe")
.setEmail("[email protected]")
.setAddress("John Doe Street 1, 5678 Doestown")
.setTitle("Mister")
.setCompany("John Doe Inc.")
.setPhoneNumber("1234")
.setWebsite("www.example.org");
QRCode.from(johnDoe).file();

// encode email data
EMail email = new EMail("[email protected]");
QRCode.from(email).file();

// encode mms data
MMS mms = new MMS("8675309", "Hello Jenny");
QRCode.from(mms).file();

// encode sms data
SMS sms = new SMS("8675309", "Hello Jenny");
QRCode.from(sms).file();

// encode MeCard data
MeCard janeDoe = new MeCard("Jane Doe");
janeDoe.setEmail("[email protected]");
janeDoe.setAddress("John Doe Street 1, 5678 Doestown");
janeDoe.setTelephone("1234");
QRCode.from(janeDoe).file();

// if using special characters don't forget to supply the encoding
VCard johnSpecial = new VCard("Jöhn Dɵe")
.setAddress("ëåäöƞ Sträät 1, 1234 Döestüwn");
QRCode.from(johnSpecial).withCharset("UTF-8").file();
}
}
```
#### Java SE only

When using java you can create svg files via `.svg()` terminal operator:

```java
File file = QRCode.from("www.example.org").svg();
File file = QRCode.from("www.example.com").withSize(250, 250).withColor(30, 90).svg();
```

It's also possible to write svg to an `OutputStream` with terminal operation:

```java
OutputStream outs = // ...
QRCode.from("www.example.org").svg(outs);
```

#### Android only

On Android you have a special method `bitmap()` which returns a `android.graphics.Bitmap` without creating a `File` object before, so you can use the generated `android.graphics.Bitmap` immediately inside an `ImageView`:

```java
Bitmap myBitmap = QRCode.from("www.example.org").bitmap();
ImageView myImage = (ImageView) findViewById(R.id.imageView);
myImage.setImageBitmap(myBitmap);
```

#### License:

http://www.apache.org/licenses/LICENSE-2.0.html