1. 程式人生 > >Android生成帶圖片的二維碼

Android生成帶圖片的二維碼

public class MainActivity extends Activity {
    private EditText etCompany;
    private EditText etPhone;
    private EditText etEmail;
    private EditText etWeb;
    private Bitmap logo;
    private static final int IMAGE_HALFWIDTH = 40;//寬度值,影響中間圖片大小
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //獲得資源圖片,可改成獲取本地圖片或拍照獲取圖片
        logo=BitmapFactory.decodeResource(super.getResources(),R.drawable.y014);
        etCompany =(EditText) findViewById(R.id.etCompany);
        etPhone=(EditText) findViewById(R.id.etPhone);
        etEmail =(EditText) findViewById(R.id.etEmail);
        etWeb =(EditText) findViewById(R.id.etWeb); 
        findViewById(R.id.but).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                String company=etCompany.getText().toString().trim() ;
                String phone =etPhone .getText().toString().trim() ; 
                String email = etEmail.getText().toString().trim() ;
                String web = etWeb.getText().toString().trim() ; 
                //二維碼中包含的文字資訊
                String contents= "BEGIN:VCARD\nVERSION:3.0\nORG:"+company+"\nTEL:"+phone+"\nURL:"+web+"\nEMAIL:"+email+"\nEND:VCARD";
            try {
                //呼叫方法createCode生成二維碼
                Bitmap bm=createCode(contents,logo,BarcodeFormat.QR_CODE);
                ImageView img=(ImageView)findViewById(R.id.imgCode) ;
                //將二維碼在介面中顯示
                img.setImageBitmap(bm);
            } catch (WriterException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
                
            }
        });
        
    }

    /**
     * 生成二維碼
     * @param string 二維碼中包含的文字資訊
     * @param mBitmap logo圖片
     * @param format  編碼格式
     * @return Bitmap 點陣圖
     * @throws WriterException
     */
    public Bitmap createCode(String string,Bitmap mBitmap, BarcodeFormat format)
            throws WriterException {
        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<EncodeHintType, String> hst = new Hashtable<EncodeHintType, String>();
        hst.put(EncodeHintType.CHARACTER_SET, "UTF-8");//設定字元編碼
        BitMatrix matrix = writer.encode(string, format, 400, 400, 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;
    }
    
}

相關推薦

QRCode 掃描、掃描條形碼、相簿獲取圖片後識別、生成 Logo 、支援微博微信 QQ 掃描樣式

目錄功能介紹根據之前公司的產品需求,參考 barcodescanner 改的,希望能幫助到有生成二維碼、掃描二維碼、識別圖片二維碼等需求的猿友。修改幅度較大,也就沒準備針對 barcodescanner 庫提交PR。 ZXing 生成可自定義顏色、帶 logo 的二維碼 ZX

基於PHP類庫PHPqrCode生成LOGO

PHPqrCode是一個PHP二維碼生成類庫,利用它可以輕鬆生成二維碼,官網提供了下載和多個演示demo,檢視地址:http://phpqrcode.sourceforge.net/。下載官網提供的類庫後,只需要使用phpqrcode.php就可以生成二維碼了,當然您的PHP環境必須開啟支援GD2。

thinkphp 使用phpqrcode生成logo生成海報

1-下載類庫 composer require aferrandini/phpqrcode -vvv 2-common的方法 //$text 文字的內容 //$logo logo圖片 function code($text,$logo){ //二維碼圖片儲存路徑

用phpqrcode生成logo, 需注意幾點,不注意是要進坑的哦.

先附上程式碼: include '../vendor/phpqrcode/phpqrcode.php'; $value = 'http://127.0.0.1/txw1958/'; //二維碼內容 $errorCorrectionLevel = 'L';//容錯級別

URL 生成文字

    <!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8"/> </head> <body

兩種JAVA生成logo的方法

  一、方法一       只使用一個zxing.jar生成二維碼,下載地址http://central.maven.org/maven2/com/google/zxing/core/        

Android生成自定義

/** * 生成自定義二維碼 * * @param content 字串內容 * @param width 二維碼寬度 * @param height 二維碼高度 * @param characte

Android生成和掃描

現在高階大氣上檔次的Android程式都會有二維碼生成和掃描的功能, 因為我最近在做一個專案,需要使用到二維碼的生成和掃描,經過查詢資料,使用的是通過zxing來生成和掃描二維碼 簡化好的二維碼核心庫:https://download.csdn.net/download/qq_31844

微信引流活動:生成、傳送海報、

參加活動-生成帶引數二維碼-將二維碼與海報進行合併-推動給客戶-客戶分享到朋友圈-朋友圈裡朋友通過二維碼關注公眾號-再次生成二維碼海報-迴圈往復-引流!       程式碼實現: 1.獲取臨時二維碼ticket   /// <summa

微信服務號生成引數

為了滿足使用者渠道推廣分析和使用者帳號繫結等場景的需要,公眾平臺提供了生成帶引數二維碼的介面。使用該介面可以獲得多個帶不同場景值的二維碼,使用者掃描後,公眾號可以接收到事件推送。 目前有2種類型的二維碼: 1、臨時二維碼,是有過期時間的,最長可以設定為在

微信公眾平臺開發生成引數

一、場景二維碼 為了滿足使用者渠道推廣分析的需要,公眾平臺提供了生成帶引數二維碼的介面。使用該介面可以獲得多個帶不同場景值的二維碼,使用者掃描後,公眾號可以接收到事件推送。 目前有2種類型的二維碼,分別是臨時二維碼和永久二維碼,前者有過期時間,最大為1800秒,但能夠生成較

微信公眾號 訂閱號 生成引數

1.公眾號的任意一篇文章頁連結 例如: http://mp.weixin.qq.com/s?__biz=MjM5NzAwNzMwMQ==&mid=2655787844&idx=3&

微信公眾號最佳實踐 ( 4.6)生成引數

<?php $appid = "wxd1fc65357aca6efa"; $appsecret = "55a5a3a73b3f1603240a1c27cb0b270f"; $url = "https://api.weixin.qq.com/cgi-bin/token?grant

微信公眾號開發生成引數的功能

一、使用者掃描帶場景值二維碼時,可能推送以下兩種事件: 如果使用者還未關注公眾號,則使用者可以關注公眾號,關注後微信會將帶場景值關注事件推送給開發者。 如果使用者已經關注公眾號,在使用者掃描後會自動進入會話,微信也會將帶場景值掃描事件推送給開發者。 獲取帶引數的二維

微信小程式請求:使用者點選按鈕生成

目標:  請求二維碼並展示  步驟:  使用者點選按鈕生成二維碼  步驟:  1、微信小程式往後臺請求二維碼  2、後臺(java/php) 根據微信小程式資訊往微信端請求tonken  3、後臺得到tonken後往微信端請求二維碼圖片  4、後臺得到圖片後儲存在伺服器上,

微平臺開發之生成引數

一、場景二維碼 為了滿足使用者渠道推廣分析的需要,公眾平臺提供了生成帶引數二維碼的介面。使用該介面可以獲得多個帶不同場景值的二維碼,使用者掃描後,公眾號可以接收到事件推送。 目前有2種類型的二維碼,分別是臨時二維碼和永久二維碼,前者有過期時間,最大為1800秒,但能夠生

Java微信公眾平臺開發之生成

微信官方提供的生成二維碼介面得到的是當前公眾號的二維碼。 目前有2種類型的二維碼: 1、臨時二維碼,是有過期時間的,最長可以設定為在二維碼生成後的30天(即2592000秒)後過期,但能夠生成較多數量,主要用於帳號繫結等不要求二維碼永久儲存的業務場景 2

微信公眾號開發(十一)生成引數

公眾平臺提供了生成帶引數二維碼的介面。使用該介面可以獲得多個帶不同場景值的二維碼,使用者掃描後,公眾號可以接收到事件推送。 目前有2種類型的二維碼: 1、臨時二維碼,是有過期時間的,最長可以設定為在二維碼生成後的30天(即2592000秒)後過期,但能夠生成較多數量。臨時

C#呼叫ThoughtWorks.QRCode.dll生成引數

ThoughtWorks.QRCode.Codec.QRCodeEncoder encoder = new QRCodeEncoder();        encoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//編碼方式(注意:BYTE能支援中文

PHP微信小程式生成getwxacodeunlimit

老闆最近有點飄了,他要在PC端的網站放一個微信小程式的二維碼,並且掃描這個二維碼以後要跳到小程式對應的房源詳情頁。 這是微信官方給出的文件,連線地址:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/qr-code.