Zxing二维码扫描生成

来源:互联网 发布:wpf listbox 数据绑定 编辑:程序博客网 时间:2024/05/17 00:49
1.导入 zxinglib包
//扫描按钮
public voidscannner(View view){
Intent openCamera =newIntent(this,CaptureActivity.class);
startActivityForResult(openCamera,0);
}
//生成二维码按钮
public voidgener_pic(View view){
String contentString ="22222";
if(!contentString.equals("")) {
//根据字符串生成二维码图片并显示在界面上,第二个参数为图片的大小(350*350)
Bitmap qrCodeBitmap =null;
try{
qrCodeBitmap = BitmapUtils.create2DCode(contentString);
}catch(WriterException e) {
e.printStackTrace();
}
gen_id.setImageBitmap(qrCodeBitmap);
}
}
//扫描回传
@Override
protected voidonActivityResult(intrequestCode, intresultCode,Intent data) {
super.onActivityResult(requestCode,resultCode,data);
if(resultCode==RESULT_OK){
Bundle bundle = data.getExtras();
String result = bundle.getString("result");
result_button_view.setText(result);
// gen_id.setImageBitmap((Bitmap) data.getParcelableExtra("bitmap"));

}
// 通过像素数组生成bitmap,具体参考api
bitmap.setPixels(pixels,0,width,0,0,width,height);
下面添加:
if(logoBm !=null) {
bitmap =addLogo(bitmap,logoBm);
}
在BitmapUtils中添加方法
/**
* 在二维码中间添加Logo图案
*/
private staticBitmapaddLogo(Bitmap src,Bitmap logo) {
if(src ==null) {
return null;
}
if(logo ==null) {
returnsrc;
}
//获取图片的宽高
intsrcWidth = src.getWidth();
intsrcHeight = src.getHeight();
intlogoWidth = logo.getWidth();
intlogoHeight = logo.getHeight();
if(srcWidth ==0 || srcHeight ==0) {
return null;
}
if(logoWidth ==0 || logoHeight ==0) {
returnsrc;
}
//logo大小为二维码整体大小的1/5
floatscaleFactor = srcWidth *1.0f/ 5 / logoWidth;
Bitmap bitmap = Bitmap.createBitmap(srcWidth,srcHeight,Bitmap.Config.ARGB_8888);
try{
Canvas canvas =newCanvas(bitmap);
canvas.drawBitmap(src,0,0, null);
canvas.scale(scaleFactor,scaleFactor,srcWidth /2,srcHeight /2);
canvas.drawBitmap(logo,(srcWidth - logoWidth) /2,(srcHeight - logoHeight) /2, null);
canvas.save(Canvas.ALL_SAVE_FLAG);
canvas.restore();
}catch(Exception e) {
bitmap =null;
e.getStackTrace();
}
returnbitmap;
}

阅读全文
0 0
原创粉丝点击