Skip to content

Commit 8369f2a

Browse files
committed
update barcode writer
1 parent 2c25d5c commit 8369f2a

File tree

3 files changed

+41
-6
lines changed

3 files changed

+41
-6
lines changed

czxing/src/main/cpp/native-lib.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,13 +153,16 @@ extern "C"
153153
JNIEXPORT jint JNICALL
154154
Java_me_devilsen_czxing_code_EncodeEngine_nativeWriteCode(JNIEnv *env, jobject instance, jstring content_,
155155
jint width, jint height, jint color,
156-
jstring format_, jobjectArray result) {
156+
jstring format_, jint ecc, jint margin, jobjectArray result) {
157157
const char *content = env->GetStringUTFChars(content_, 0);
158158
const char *format = env->GetStringUTFChars(format_, 0);
159159

160160
auto zxingFormat = ZXing::BarcodeFormatFromString(format);
161161
ZXing::CharacterSet encoding = ZXing::CharacterSet::UTF8;
162-
auto writer = ZXing::MultiFormatWriter(zxingFormat).setEncoding(encoding).setEccLevel(5);
162+
auto writer = ZXing::MultiFormatWriter(zxingFormat)
163+
.setEncoding(encoding)
164+
.setEccLevel(ecc)
165+
.setMargin(margin);
163166
ZXing::BitMatrix bitMatrix = writer.encode(content, width, height);
164167

165168
if (bitMatrix.empty()) {

czxing/src/main/java/me/devilsen/czxing/code/BarcodeWriter.java

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public BarcodeWriter() {
2424
*
2525
* @param text 要生成的文本
2626
* @param size 边长
27+
*
2728
* @return bitmap二维码
2829
*/
2930
public Bitmap write(String text, int size) {
@@ -36,6 +37,7 @@ public Bitmap write(String text, int size) {
3637
* @param text 要生成的文本
3738
* @param size 边长
3839
* @param color 要生成的二维码颜色
40+
*
3941
* @return bitmap二维码
4042
*/
4143
public Bitmap write(String text, int size, int color) {
@@ -49,6 +51,7 @@ public Bitmap write(String text, int size, int color) {
4951
* @param size 图片边长
5052
* @param color 要生成的二维码颜色
5153
* @param logo 放在中间的logo
54+
*
5255
* @return bitmap二维码
5356
*/
5457
public Bitmap write(String text, int size, int color, Bitmap logo) {
@@ -61,6 +64,7 @@ public Bitmap write(String text, int size, int color, Bitmap logo) {
6164
* @param text 要生成的文字(不支持中文)
6265
* @param width 图片宽
6366
* @param height 图片高
67+
*
6468
* @return 一维码bitmap
6569
*/
6670
public Bitmap writeBarCode(String text, int width, int height) {
@@ -74,6 +78,7 @@ public Bitmap writeBarCode(String text, int width, int height) {
7478
* @param width 图片宽
7579
* @param height 图片高
7680
* @param format 一维码格式
81+
*
7782
* @return 一维码bitmap
7883
*/
7984
public Bitmap writeBarCode(String text, int width, int height, BarcodeFormat format) {
@@ -87,6 +92,7 @@ public Bitmap writeBarCode(String text, int width, int height, BarcodeFormat for
8792
* @param width 图片宽
8893
* @param height 图片高
8994
* @param color 一维码颜色
95+
*
9096
* @return 一维码bitmap
9197
*/
9298
public Bitmap writeBarCode(String text, int width, int height, int color) {
@@ -102,11 +108,30 @@ public Bitmap writeBarCode(String text, int width, int height, int color) {
102108
* @param color 要生成的二维码颜色
103109
* @param format 要生成的条码格式
104110
* @param logo 放在中间的logo
111+
*
105112
* @return bitmap二维码
106113
*/
107114
private Bitmap write(String text, int width, int height, int color, BarcodeFormat format, Bitmap logo) {
115+
return write(text, width, height, color, format, 5, 0, logo);
116+
}
117+
118+
/**
119+
* 生成图片
120+
*
121+
* @param text 要生成的文本
122+
* @param width 图片宽
123+
* @param height 图片高
124+
* @param color 要生成的二维码颜色
125+
* @param format 要生成的条码格式
126+
* @param eccLevel 纠错级别[0-8]
127+
* @param margin margin
128+
* @param logo 放在中间的logo
129+
*
130+
* @return bitmap二维码
131+
*/
132+
private Bitmap write(String text, int width, int height, int color, BarcodeFormat format, int eccLevel, int margin, Bitmap logo) {
108133
Object[] result = new Object[1];
109-
int resultCode = mEncodeEngine.writeCode(text, width, height, color, format.name(), result);
134+
int resultCode = mEncodeEngine.writeCode(text, width, height, color, format, eccLevel, margin, result);
110135
Bitmap bitmap = null;
111136
if (resultCode > -1) {
112137
int[] pixels = (int[]) result[0];

czxing/src/main/java/me/devilsen/czxing/code/EncodeEngine.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,19 @@
55
*/
66
public class EncodeEngine {
77

8-
public int writeCode(String content, int width, int height, int color, String format, Object[] result) {
9-
return nativeWriteCode(content, width, height, color, format, result);
8+
/**
9+
* @param format {@link BarcodeFormat}
10+
* @param ecc Error correction level, [0-8] Used for Aztec, PDF417, and QRCode only
11+
* @param margin Margin around barcode, Used for all formats,sets the minimum number of quiet zone pixels.
12+
*
13+
* @return 0:success -1:fail
14+
*/
15+
public int writeCode(String content, int width, int height, int color, BarcodeFormat format, int ecc, int margin, Object[] result) {
16+
return nativeWriteCode(content, width, height, color, format.name(), ecc, margin, result);
1017
}
1118

1219
// write
13-
private native int nativeWriteCode(String content, int width, int height, int color, String format, Object[] result);
20+
private native int nativeWriteCode(String content, int width, int height, int color, String format, int ecc, int margin, Object[] result);
1421

1522
static {
1623
System.loadLibrary("czxing");

0 commit comments

Comments
 (0)