您的位置:首页 > 编程语言 > Go语言

Zxing生成二维码和添加Logo

2017-04-20 14:11 399 查看
1.一个项目开始,都需要做准备,准备一个Zxing。jar包来支撑生成二维码

  接下来直接上代码,

  生成普通二维码

   先写一个生成二维码的方法

//生成二维码
private Bitmap generateBitmap(String content, int width, int height) {
//生成二维码的写对象
QRCodeWriter qrCodeWriter=new QRCodeWriter();
//定义集合
Map<EncodeHintType,String> hints=new HashMap<>();
//添加元素,元素为编码格式
hints.put(EncodeHintType.CHARACTER_SET,"utf-8");
//生成二维码的内容
try {
BitMatrix encode=qrCodeWriter.encode(content, BarcodeFormat.QR_CODE,width,height);
int[] pixels=new int[width*height];
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
if (encode.get(j, i)) {
pixels[i * width + j] = 0x00000000;
} else {
pixels[i * width + j] = 0xffffffff;
}
}
}
//返回生成的二维码
return Bitmap.createBitmap(pixels, 0, width, width, height, Bitmap.Config.RGB_565);
} catch (WriterException e) {
e.printStackTrace();
}
return null;
}
接下来在定义一个空的Bitmap对象
Bitmap bitmap = null;

在嗯纽的监听中调用方法,把返回的值放到ImageView上
//生成二维码
bitmap = generateBitmap("http://blog.csdn.net/yanzhenjie1003/article/details/52503533", 400, 400);
iv.setImageBitmap(bitmap);

2.。。。。生成带logo的二维码
在以上的基础上,在添加一个生成logo的方法
//添加logo图标
private Bitmap addLogo(Bitmap qrBitmap, Bitmap logoBitmap) {
//得到图片和logo的大小
int qrBitmapWidth = qrBitmap.getWidth();
int qrBitmapHeight = qrBitmap.getHeight();
int logoBitmapWidth = logoBitmap.getWidth();
int logoBitmapHeight = logoBitmap.getHeight();
//得到图片的大小,生成画布的大小
Bitmap blankBitmap = Bitmap.createBitmap(qrBitmapWidth, qrBitmapHeight, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(blankBitmap);
canvas.drawBitmap(qrBitmap, 0, 0, null);
//画一个正方形
canvas.save(Canvas.ALL_SAVE_FLAG);
//一系列的运算
float scaleSize = 1.0f;
while ((logoBitmapWidth / scaleSize) > (qrBitmapWidth / 5) || (logoBitmapHeight / scaleSize) > (qrBitmapHeight / 5)) {
scaleSize *= 2;
}
float sx = 1.0f / scaleSize;
canvas.scale(sx, sx, qrBitmapWidth / 2, qrBitmapHeight / 2);
canvas.drawBitmap(logoBitmap, (qrBitmapWidth - logoBitmapWidth) / 2, (qrBitmapHeight - logoBitmapHeight) / 2, null);
canvas.restore();
//返回带有图标的logo
return blankBitmap;
}
把监听中的代码改变为
//生成自定义的二维码
//先生成二维码
bitmap = generateBitmap("http://blog.csdn.net/yanzhenjie1003/article/details/52503533", 400, 400);
//添加logo
//先得到一个logo图标
Bitmap logoBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
//把logo添加到二维码上
Bitmap customBitmap = addLogo(bitmap, logoBitmap);
iv.setImageBitmap(customBitmap);
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Zxing