仿微信二维码生成以及条形码生成.docx

上传人:b****6 文档编号:16352437 上传时间:2023-07-12 格式:DOCX 页数:6 大小:17.59KB
下载 相关 举报
仿微信二维码生成以及条形码生成.docx_第1页
第1页 / 共6页
仿微信二维码生成以及条形码生成.docx_第2页
第2页 / 共6页
仿微信二维码生成以及条形码生成.docx_第3页
第3页 / 共6页
仿微信二维码生成以及条形码生成.docx_第4页
第4页 / 共6页
仿微信二维码生成以及条形码生成.docx_第5页
第5页 / 共6页
仿微信二维码生成以及条形码生成.docx_第6页
第6页 / 共6页
亲,该文档总共6页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

仿微信二维码生成以及条形码生成.docx

《仿微信二维码生成以及条形码生成.docx》由会员分享,可在线阅读,更多相关《仿微信二维码生成以及条形码生成.docx(6页珍藏版)》请在冰点文库上搜索。

仿微信二维码生成以及条形码生成.docx

仿微信二维码生成以及条形码生成

仿微信二维码生成以及条形码生成

[java]viewplaincopypackageyour.QRCode.namespace;importjava.io.File;importjava.io.FileOutputStream;importjava.util.HashMap;importjava.util.Map;importcom.google.zxing.BarcodeFormat;importcom.google.zxing.EncodeHintType;importcom.google.zxing.MultiFormatWriter;importcom.google.zxing.WriterException;importmon.BitMatrix;importcom.google.zxing.qrcode.decoder.ErrorCorrectionLevel;importandroid.app.Activity;importandroid.content.Context;importandroid.graphics.Bitmap;importandroid.graphics.Bitmap.Config;importandroid.graphics.BitmapFactory;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Matrix;importandroid.graphics.PointF;importandroid.graphics.Rect;importandroid.graphics.drawable.BitmapDrawable;importandroid.os.Bundle;importandroid.os.Environment;importandroid.util.Log;importandroid.view.Gravity;importandroid.view.View;importandroid.view.View.MeasureSpec;importandroid.view.ViewGroup.LayoutParams;importandroid.widget.Button;importandroid.widget.ImageView;importandroid.widget.LinearLayout;importandroid.widget.TextView;publicclassQRCodeTextActivityActivityextendsActivity{/**Calledwhentheactivityisfirstcreated.*/Buttonbtn1=null;Buttonbtn2=null;ImageViewivImageView=null;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);btn1=(Button)findViewById(R.id.button1);//条形码btn2=(Button)findViewById(R.id.button2);//二维码ivImageView=(ImageView)findViewById(R.id.imageView1);finalStringstrconteString="c2b0f58a6f09cafd1503c06ef08ac7aeb7ddb91a602dac145551c102143e6159e385cdc294";btn1.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){BitmapmBitmap=null;mBitmap=creatBarcode(QRCodeTextActivityActivity.this,strconteString,300,300,true);if(mBitmap!

=null){ivImageView.setImageBitmap(mBitmap);}}});btn2.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){BitmapmBitmap=null;try{if(!

strconteString.equals("")){mBitmap=Create2DCode(strconteString);//Bitmapbm=//BitmapFactory.decodeResource(getResources(),//R.drawable.diagnose1);ivImageView.setImageBitmap(createBitmap(mBitmap,zoomBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.cccc),100,100)));}}catch(Exceptione){e.printStackTrace();}}});}publicBitmapCreate2DCode(Stringstr)throwsWriterException{Map<EncodeHintType,Object>hints=newHashMap<EncodeHintType,Object>();hints.put(EncodeHintType.ERROR_CORRECTION,ErrorCorrectionLevel.L);hints.put(EncodeHintType.CHARACTER_SET,"GBK");//hints.put(EncodeHintType.CHARACTER_SET,"UTF-8");//生成二维矩阵,编码时指定大小,不要生成了图片以后再进行缩放,这样会模糊导致识别失败BitMatrixmatrix=newMultiFormatWriter().encode(str,BarcodeFormat.QR_CODE,500,500,hints);intwidth=matrix.getWidth();intheight=matrix.getHeight();//二维矩阵转为一维像素数组,也就是一直横着排了int[]pixels=newint[width*height];for(inti=0;i<pixels.length;i++){pixels[i]=0xffffffff;}for(inty=0;y<height;y++){for(intx=0;x<width;x++){if(matrix.get(x,y)){pixels[y*width+x]=0xff000000;}}}Bitmapbitmap=Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888);//通过像素数组生成bitmap,具体参考apibitmap.setPixels(pixels,0,width,0,0,width,height);returnbitmap;}publicFileGetCodePath(Stringname){StringEXTERN_PATH=null;if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)==true){EXTERN_PATH=android.os.Environment.getExternalStorageDirectory().getAbsolutePath()+"/";Filef=newFile(EXTERN_PATH);if(!

f.exists()){f.mkdirs();}}returnnewFile(EXTERN_PATH+name);}/***图片两端所保留的空白的宽度*/privateintmarginW=20;/***条形码的编码类型*/privateBarcodeFormatbarcodeFormat=BarcodeFormat.CODE_128;/***生成条形码**@paramcontext*@paramcontents*需要生成的内容*@paramdesiredWidth*生成条形码的宽带*@paramdesiredHeight*生成条形码的高度*@paramdisplayCode*是否在条形码下方显示内容*@return*/publicBitmapcreatBarcode(Contextcontext,Stringcontents,intdesiredWidth,intdesiredHeight,booleandisplayCode){BitmapruseltBitmap=null;if(displayCode){BitmapbarcodeBitmap=encodeAsBitmap(contents,barcodeFormat,desiredWidth,desiredHeight);BitmapcodeBitmap=creatCodeBitmap(contents,desiredWidth+2*marginW,desiredHeight,context);ruseltBitmap=mixtureBitmap(barcodeBitmap,codeBitmap,newPointF(0,desiredHeight));}else{ruseltBitmap=encodeAsBitmap(contents,barcodeFormat,desiredWidth,desiredHeight);}returnruseltBitmap;}/***生成显示编码的Bitmap**@paramcontents*@paramwidth*@paramheight*@paramcontext*@return*/protectedBitmapcreatCodeBitmap(Stringcontents,intwidth,intheight,Contextcontext){TextViewtv=newTextView(context);LinearLayout.LayoutParamslayoutParams=newLinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);tv.setLayoutParams(layoutParams);tv.setText(contents);tv.setHeight(height);tv.setGravity(Gravity.CENTER_HORIZONTAL);tv.setWidth(width);tv.setDrawingCacheEnabled(true);tv.setTextColor(Color.BLACK);tv.measure(MeasureSpec.makeMeasureSpec(0,MeasureSpec.UNSPECIFIED),MeasureSpec.makeMeasureSpec(0,MeasureSpec.UNSPECIFIED));tv.layout(0,0,tv.getMeasuredWidth(),tv.getMeasuredHeight());tv.buildDrawingCache();BitmapbitmapCode=tv.getDrawingCache();returnbitmapCode;}/***生成条形码的Bitmap**@paramcontents*需要生成的内容*@paramformat*编码格式*@paramdesiredWidth*@paramdesiredHeight*@return*@throwsWriterException*/protectedBitmapencodeAsBitmap(Stringcontents,BarcodeFormatformat,intdesiredWidth,intdesiredHeight){finalintWHITE=0xFFFFFFFF;finalintBLACK=0xFF000000;MultiFormatWriterwriter=newMultiFormatWriter();BitMatrixresult=null;try{result=writer.encode(contents,format,desiredWidth,desiredHeight,null);}catch(WriterExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}intwidth=result.getWidth();intheight=result.getHeight();int[]pixels=newint[width*height];//Allare0,orblack,bydefaultfor(inty=0;y<height;y++){intoffset=y*width;for(intx=0;x<width;x++){pixels[offset+x]=result.get(x,y)?

BLACK:

WHITE;}}Bitmapbitmap=Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888);bitmap.setPixels(pixels,0,width,0,0,width,height);returnbitmap;}/***将两个Bitmap合并成一个**@paramfirst*@paramsecond*@paramfromPoint*第二个Bitmap开始绘制的起始位置(相对于第一个Bitmap)*@return*/protectedBitmapmixtureBitmap(Bitmapfirst,Bitmapsecond,PointFfromPoint){if(first==null||second==null||fromPoint==null){returnnull;}BitmapnewBitmap=Bitmap.createBitmap(first.getWidth()+second.getWidth()+marginW,first.getHeight()+second.getHeight(),Config.ARGB_4444);Canvascv=newCanvas(newBitmap);cv.drawBitmap(first,marginW,0,null);cv.drawBitmap(second,fromPoint.x,fromPoint.y,null);cv.save(Canvas.ALL_SAVE_FLAG);cv.restore();returnnewBitmap;}/***仿微信二维码开始***///图片剪切publicBitmapcutBitmap(BitmapmBitmap,Rectr,Bitmap.Configconfig){intwidth=r.width();intheight=r.height();BitmapcroppedImage=Bitmap.createBitmap(width,height,config);Canvascvs=newCanvas(croppedImage);Rectdr=newRect(0,0,width,height);cvs.drawBitmap(mBitmap,r,dr,null);returncroppedImage;}/****合并图片**@paramsrc*@paramwatermark*@return*/privateBitmapcreateBitmap(Bitmapsrc,Bitmapwatermark){Stringtag="createBitmap";Log.d(tag,"createanewbitmap");if(src==null){returnnull;}intw=src.getWidth();inth=src.getHeight();intww=watermark.getWidth();intwh=watermark.getHeight();//createthenewblankbitmapBitmapnewb=Bitmap.createBitmap(w,h,Config.ARGB_8888);//创建一个新的和SRC长度宽度一样的位图Canvascv=newCanvas(newb);//drawsrcintocv.drawBitmap(src,0,0,null);//在0,0坐标开始画入src//在src的中间画watermarkcv.drawBitmap(watermark,w/2-ww/2,h/2-wh/2,null);//设置ic_launcher的位置//saveallclipcv.save(Canvas.ALL_SAVE_FLAG);//保存//storecv.restore();//存储returnnewb;}/****缩放图片**@paramsrc*@paramdestWidth*@paramdestHeigth*@return*/privateBitmapzoomBitmap(Bitmapsrc,intdestWidth,intdestHeigth){Stringtag="lessenBitmap";if(src==null){returnnull;}intw=src.getWidth();//源文件的大小inth=src.getHeight();//calculatethescale-inthiscase=0.4ffloatscaleWidth=((float)destWidth)/w;//宽度缩小比例floatscaleHeight=((float)destHeigth)/h;//高度缩小比例Log.d(tag,"bitmapwidthis:

"+w);Log.d(tag,"bitmapheightis:

"+h);Log.d(tag,"newwidthis:

"+destWidth);Log.d(tag,"newheightis:

"+destHeigth);Log.d(tag,"scalewidthis:

"+scaleWidth);Log.d(tag,"scaleheightis:

"+scaleHeight);Matrixm=newMatrix();//矩阵m.postScale(scaleWidth,scaleHeight);//设置矩阵比例BitmapresizedBitmap=Bitmap.createBitmap(src,0,0,w,h,m,true);//直接按照矩阵的比例把源文件画入进行returnresizedBitmap;}}

[html]viewplaincopy<?

xmlversion="1.0"encoding="utf-8"?

><LinearLayoutxmlns:

android="android:

layout_width="fill_parent"android:

layout_height="fill_parent"android:

orientation="vertical"android:

background="#ffffff"><TextViewandroid:

layout_width="fill_parent"android:

layout_height="wrap_content"android:

text="@string/hello"/><Buttonandroid:

id="@+id/button1"android:

layout_width="match_parent"android:

layout_height="wrap_content"android:

text="条形码"/><Buttonandroid:

id="@+id/button2"android:

layout_width="match_parent"android:

layout_height="wrap_content"android:

text="二维码"/><RelativeLayoutandroid:

layout_width="match_parent"android:

layout_height="match_parent"><ImageViewandroid:

id="@+id/imageView1"android:

layout_width="wrap_content"android:

layout_height="wrap_c

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2