关于生成二维码

package com.example.qr_codescan;

import java.util.Hashtable;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

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;
/**
 * 是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;
 * 在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,
 * 通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:
 * 它具有条码技术的一些共性:每种码制有其特定的字符集;
 * 每个字符占有一定的宽度;
 * 具有一定的校验功能等。
 * 同时还具有对不同行的信息自动识别功能、及处理图形旋转变化点
 *
 *
 *
    Quick Response Code
 * @author 喆
 *常见的有PDF417、QR Code、Code 49、Code 16K、Code One等
 *
 * 功能
●信息获取(名片、地图、WIFI密码、资料)
●网站跳转(跳转到微博、手机网站、网站)
●广告推送(用户扫码,直接浏览商家推送的视频、音频广告)
●手机电商(用户扫码、手机直接购物下单)
●防伪溯源(用户扫码、即可查看生产地;同时后台可以获取最终消费地)
●优惠促销(用户扫码,下载电子优惠券,抽奖)
●会员管理(用户手机上获取电子会员信息、VIP服务)
●手机支付(扫描商品二维码,通过银行或第三方支付提供的手机端通道完成支付)
 */
public class MainActivity extends Activity {
    
    private final static int SCANNIN_GREQUEST_CODE = 1;
    private static final int QR_WIDTH = 200;
    private static final int QR_HEIGHT = 200;
    /**
     * 显示扫描结果
     */
    private EditText mEditText_Result ;
    /**
     * 显示扫描拍的图片
     */
    private ImageView mImageView;
    /**
     * 输入的信息
     */
    private EditText mEditText;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        mEditText_Result = (EditText) findViewById(R.id.result);
        mImageView = (ImageView) findViewById(R.id.qrcode_bitmap);
        mEditText = (EditText) findViewById(R.id.et_msg);
        
        /**
         * 点击按钮跳转到二维码扫描界面,
         * 这里用的是startActivityForResult跳转
         * 扫描完了之后跳回该界面
         */
        scanQRCodeImage();
        
        /**
         * 生成二维码
         */
        findViewById(R.id.button2).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                /**
                 * 生成二维码图片
                 */
                createQRCodeImage();
            }
        });
    }
    
    
    private void scanQRCodeImage() {
        // TODO Auto-generated method stub
        findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(MainActivity.this, MipcaActivityCapture.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivityForResult(intent, SCANNIN_GREQUEST_CODE);
            }
        });
    }

protected void createQRCodeImage() {
        // TODO Auto-generated method stub
        QRCodeWriter writer = new QRCodeWriter();
        String text = mEditText.getText().toString();
        /**
         * 排除情况
         */
        if (text == null || "".equals(text) || text.length() < 1) {
            return;
        }
        /**
         *  把输入的文本转为二维码
         */
        try {
            BitMatrix martix = writer.encode(text, BarcodeFormat.QR_CODE,
                    QR_WIDTH, QR_HEIGHT);
            Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
            BitMatrix bitMatrix = new QRCodeWriter().encode(text,
                    BarcodeFormat.QR_CODE, QR_WIDTH, QR_HEIGHT, hints);
            int[] pixels = new int[QR_WIDTH * QR_HEIGHT];
            for (int y = 0; y < QR_HEIGHT; y++) {
                for (int x = 0; x < QR_WIDTH; x++) {
                    if (bitMatrix.get(x, y)) {
                        pixels[y * QR_WIDTH + x] = 0xff000000;
                    } else {
                        pixels[y * QR_WIDTH + x] = 0xffffffff;
                    }
                }
            }
            Bitmap bitmap = Bitmap.createBitmap(QR_WIDTH, QR_HEIGHT,
                    Bitmap.Config.ARGB_8888);

bitmap.setPixels(pixels, 0, QR_WIDTH, 0, 0, QR_WIDTH, QR_HEIGHT);
            /**
             * 显示
             */
            mImageView.setImageBitmap(bitmap);
            
        } catch (WriterException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
    /**
     * 接受结果的方法
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
        case SCANNIN_GREQUEST_CODE:
            if(resultCode == RESULT_OK){
                Bundle bundle = data.getExtras();
                //显示扫描到的内容
                mEditText_Result.setText(bundle.getString("result"));
                //显示
                mImageView.setImageBitmap((Bitmap) data.getParcelableExtra("bitmap"));
            }
            break;
        }
    }

}

时间: 2024-08-26 06:04:44

关于生成二维码的相关文章

微信生成二维码 只需一个网址即刻 还有jquery生成二维码

<div class="orderDetails-info"> <img src="http://qr.topscan.com/api.php?text=http://123.net/index.php?s=/Home/Index/yanzheng/mai/{$dange.id}" style="width: 5rem; margin-bottom: 1rem;" > </div> http://qr.tops

通过jquery-qrcode在线生成二维码

随着移动互联网的发展,二维码现在应用得越来越广泛了,随手扫扫就可以浏览网站.加个好友什么的,比起手工输入真的是方便太多了. 前期做了一个综合测评系统,考虑逐步实现移动化,一长串的IP地址用户输入也不方便,借助二维码的话,用户拿起手机扫扫就可以直接进入系统. 基于这个应用场景,就上网研究下了网站二维码的实现方式,归纳起来有以下两种: 1.借助一些二维码生成网站或者二维码生成器生成二维码图片,然后挂在网站上,如码云 QR-Code (二维码) 在线生成器 优点:开发成本为零,能够快速实现多样化的二维

C# winform通过ThoughtWorks.QRCode生成二维码解码可以添加logo

首先要下载ThoughtWorks.QRCode.dll文件,添加引用. ThoughtWorks.QRCode.dll下载,点击下载 界面如下: 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Win

Android:使用ZXing生成二维码(支持加入Logo图案)

ZXing是谷歌的一个开源库.能够用来生成二维码.扫描二维码.本文所介绍的是第一部分. 首先上效果图: ZXing相关各种文件官方下载地址:https://github.com/zxing/zxing/releases 或者在这里下载(仅仅有本项目所用的jar包,版本:3.2.0):链接: http://pan.baidu.com/s/1hq3s5EW password: mvg7 1.生成二维码的工具类 /** * 二维码生成工具类 */ public class QRCodeUtil { /

jquery生成二维码并实现图片下载

1.引入jquery的两个js文件 <script src="../scripts/erweima/jquery-1.10.2.min.js"></script> <script type="text/javascript" src="../scripts/erweima/jquery.qrcode.min.js"></script> 2.准备一个展示二维码的div <div id="

生成二维码

PHPqrCode是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo, 查看地址:http://phpqrcode.sourceforge.net/.    下载官网提供的类库后,只需要使用phpqrcode.php就可以生成二维码了,当然您的PHP环境必须开启支持GD2. phpqrcode.php提供了一个关键的png()方法,其中参数$text表示生成二位的的信息文本:参数$outfile表示是否输出二维码图片 文件,默认否:参数$level表示容错率,

Python生成二维码和短网址

使用PyQt5. 方便电脑传输网址或者文字内容到手机上面,扫一下二维码就行了,短网址偶尔也能用上. 1 #!/usr/bin/env python3 2 from PyQt5.QtGui import QPixmap 3 from PyQt5 import QtWidgets 4 from PyQt5.QtCore import Qt 5 import requests 6 from os.path import expanduser 7 8 9 class Ui_qrDlg(): 10 11

【VB.NET】利用 ZXing.Net 生成二维码(支持自定义LOGO)

ZXing .NET 的项目主页https://zxingnet.codeplex.com/ 代码基本上抄袭自下面两篇文章 XDhttp://www.cnblogs.com/tianma3798/p/5426869.htmlhttp://www.cnblogs.com/tianma3798/p/5426880.html 仅作参数优化,更加实用和简便一点 Shared Function MakeQR(ByVal qrtext As String, Optional ByVal width As I

java生成二维码

具体代码如下,作为一个新手,期待与你一起交流: 1 import java.awt.Color; 2 import java.awt.Graphics2D; 3 import java.awt.image.BufferedImage; 4 import java.io.File; 5 6 import javax.imageio.ImageIO; 7 8 import com.swetake.util.Qrcode; 9 public class QRCodeEncoderHandler { 1

php qrencode生成二维码

$url = http://test.php;//二维码的跳转地址 $qrcode_path = './img/test123.jpg';//二维码的保存路径及名称(linux下如果只指定路径会在php执行文件下生成二维码,所以要把路径和名称写完整) $qrcode = "/usr/bin/qrencode -o $qrcode_path  $url";//生成二维码的命令$qrcode_path二维码路径$url跳转的地址 exec($qrcode, $output, $result