zoukankan      html  css  js  c++  java
  • android生成二维码

    新建项目

    布局截图如下(一个输入框,一个按钮,一个imageview),输入想要的东西(文字,数字,网站链接等)然后点击按钮生成二维码,然后可以扫描识别。

    首先需要一个谷歌的一个jar包

    activity的代码

    	private EditText et1;
    	private Button btn1;
    	private ImageView iv1;
    	
    	private static final int IMAGE_HALFWIDTH = 35;//图片宽度值大小
    

      

    找到输入框,和按钮,imageview

                    et1 = (EditText)findViewById(R.id.editText1);
    		btn1 = (Button)findViewById(R.id.button1);
    		iv1 = (ImageView)findViewById(R.id.imageView1);
    

      按钮点击事件

    		btn1.setOnClickListener(new OnClickListener() {
    			
    			@Override
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				String toMakePic_string = et1.getText().toString().trim();
    				Bitmap logo= BitmapFactory.decodeResource(getResources(),R.drawable._netcfg);
    				
    				try {
    					Bitmap bm=createCode(toMakePic_string,logo,BarcodeFormat.QR_CODE); //一个方法在下面
    					iv1.setImageBitmap(bm);
    				} catch (WriterException e) {
    					e.printStackTrace();
    				}
    			}
    		});
    

      

    createCode方法 返回bitmap
        public Bitmap createCode(String string,Bitmap mBitmap, BarcodeFormat format)throws WriterException {
        	//Matrix,中文里叫矩阵,在图像处理方面,主要是用于平面的缩放、平移、旋转等操作。
        	Matrix m = new Matrix();
        	float sx = (float) 2 * IMAGE_HALFWIDTH / mBitmap.getWidth();
    		float sy = (float) 2 * IMAGE_HALFWIDTH / mBitmap.getHeight();
    		m.setScale(sx, sy);//设置缩放信息
    		//将logo图片按martix设置的信息缩放
    		mBitmap = Bitmap.createBitmap(mBitmap, 0, 0,mBitmap.getWidth(), mBitmap.getHeight(), m, false);
    		MultiFormatWriter writer = new MultiFormatWriter();
    		Hashtable hst = new Hashtable();
    		hst.put(EncodeHintType.CHARACTER_SET, "UTF-8");//设置字符编码
    		//生成二维码矩阵信息
    		BitMatrix matrix = writer.encode(string, format, 800, 800, hst);
    		int width = matrix.getWidth();//矩阵高度
    		int height = matrix.getHeight();//矩阵宽度
    		int halfW = width / 2;
    		int halfH = height / 2;
    		int[] pixels = new int[width * height];//定义数组长度为矩阵高度*矩阵宽度,用于记录矩阵中像素信息
    		for (int y = 0; y < height; y++) {//从行开始迭代矩阵
    			for (int x = 0; x < width; x++) {//迭代列
    				if (x > halfW - IMAGE_HALFWIDTH && x < halfW + IMAGE_HALFWIDTH && y > halfH - IMAGE_HALFWIDTH && y < halfH + IMAGE_HALFWIDTH) {
    					//该位置用于存放图片信息
    					//记录图片每个像素信息
    					pixels[y * width + x] = mBitmap.getPixel(x - halfW+ IMAGE_HALFWIDTH, y - halfH + IMAGE_HALFWIDTH); 
    				}
    				else {
    					if (matrix.get(x, y)) {
    						//如果有黑块点,记录信息
    						pixels[y * width + x] = 0xff000000;//记录黑块信息
    					}
    				}
    			}
    		}
    		Bitmap bitmap = Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888);
    		// 通过像素数组生成bitmap
    		bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
    		return bitmap;
    	}
    

      

    完成截图(写什么都可以)【】

  • 相关阅读:
    高级选择器
    CSS的选择器
    HTML——标签
    HTML
    并发编程——协程
    并发编程——线程(二)
    并发编程——线程
    4.栈
    3.链表
    2.顺序表
  • 原文地址:https://www.cnblogs.com/chaowang/p/6230025.html
Copyright © 2011-2022 走看看