前言
生成二維碼是我們經(jīng)常要做的事情,而google為我們提供了zxing這個(gè)生成二維碼的工具包,幫助我們生成二維碼.
在此附上所用的生成二維碼工具類(lèi).
工具類(lèi)
import android.content.Context;
import android.graphics.Bitmap;
import android.view.View;
import java.util.Hashtable;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
public class Utils {
public static Bitmap createQRImage(Context context, View view, String id) {
try {
if (id == null || id.isEmpty()) {
return null;
}
int width = 520;
int height = 520;
Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
BitMatrix bitMatrix = new QRCodeWriter().encode(id,
BarcodeFormat.QR_CODE, width, height, hints);
bitMatrix = deleteWhite(bitMatrix);
int[] rec = bitMatrix.getEnclosingRectangle();
width = rec[2] + 1;
height = rec[3] + 1;
int[] pixels = new int[width * height];
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
if (bitMatrix.get(x, y)) {
pixels[y * width + x] = 0xff000000;
} else {
pixels[y * width + x] = 0xffffffff;
}
}
}
Bitmap bitmap = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
return bitmap;
} catch (WriterException e) {
e.printStackTrace();
}
return null;
}
public static BitMatrix deleteWhite(BitMatrix matrix) {
int[] rec = matrix.getEnclosingRectangle();
int resWidth = rec[2] + 1;
int resHeight = rec[3] + 1;
BitMatrix resMatrix = new BitMatrix(resWidth, resHeight);
resMatrix.clear();
for (int i = 0; i < resWidth; i++) {
for (int j = 0; j < resHeight; j++) {
if (matrix.get(i + rec[0], j + rec[1])) {
resMatrix.set(i, j);
}
}
}
return resMatrix;
}
}
使用
ImageView mQRCode = (ImageView) mView.findViewById(R.id.qrcode);
Bitmap bitmap = Utils.createQRImage(context, mQRCode, info);
if (bitmap != null && !bitmap.isRecycled()) {
mQRCode.setImageBitmap(bitmap);
}
謝謝大家閱讀,如有幫助完丽,來(lái)個(gè)喜歡或者關(guān)注吧道逗!
本文作者:Anderson/Jerey_Jobs
博客地址 : 夏敏的博客/Anderson大碼渣/Jerey_Jobs
簡(jiǎn)書(shū)地址 : Anderson大碼渣
CSDN地址 : Jerey_Jobs的專(zhuān)欄
github地址 : Jerey_Jobs