Android之自定义生成彩色二维码

先导个zxing.jar包

下面是xml布局

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" 

    >

<EditText
    android:id="@+id/edittext"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_toLeftOf="@+id/button"
    android:hint="要生成的二维码" />

   <Button
       android:id="@+id/button"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentRight="true"
       android:layout_alignParentTop="true"
       android:text="生成" />

   <ImageView
       android:id="@+id/image"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerHorizontal="true"
       android:layout_centerVertical="true"
       />

</RelativeLayout>

下面是MainActivity.java

图片自己找(头像,水印,背景)

package com.bawei.create2imageview;

import com.google.zxing.WriterException;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.DisplayMetrics;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;

public class MainActivity extends Activity {

    private ImageView imageView;
    private EditText editText;
    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //生成按钮
        button = (Button) findViewById(R.id.button);
        //输入框
        editText = (EditText) findViewById(R.id.edittext);
        //image
        imageView = (ImageView) findViewById(R.id.image);

        button.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                String trim = editText.getText().toString().trim();
                Bitmap bitmap;
                try {
                    //生成彩色二维码
                    //bitmap = BitmapUtil.makeQRImage(trim, 400,400);
                    //中间头像转成bitmap类型
                     bitmap = BitmapUtil.gainBitmap(getApplicationContext(), R.drawable.image1);
                     //加头像把头像放到二维码里 1.头像2.获取要转化成二维码的信息3.宽4.高
                     bitmap = BitmapUtil.makeQRImage(bitmap,trim,400,400);
                     //根据要转化成二维码的信息的多少定义生成二维码的大小
                    // bitmap = BitmapUtil.makeQRImage(trim,400,400);
                     //加水印 1.生成的二维码2.水印图片
                      bitmap = BitmapUtil.composeWatermark( bitmap,BitmapUtil.gainBitmap(getApplicationContext(), R.drawable.z));
                    //加背景 1.生成的二维码2.背景图片
                      bitmap =  BitmapUtil.addBackground(bitmap, BitmapUtil.gainBitmap(getApplicationContext(), R.drawable.image2));
                    if(bitmap != null){
                        //给image赋值
                        imageView.setImageBitmap(bitmap);
                    }

                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

        });
    }

}

BitmapUtil.java

package com.bawei.create2imageview;

import java.util.Hashtable;
import java.util.Random;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.util.Log;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

public class BitmapUtil {

    /**
    * 根据指定内容生成自定义宽高的二维码图片
    *
    * param logoBm
    * logo图标
    * param content
    * 需要生成二维码的内容
    * param width
    * 二维码宽度
    * param height
    * 二维码高度
    * throws WriterException
    * 生成二维码异常
    */
    public static Bitmap makeQRImage(Bitmap logoBmp, String content,
    int QR_WIDTH, int QR_HEIGHT) throws WriterException {
    try {
    // 图像数据转换,使用了矩阵转换
    Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
    hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
    hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);// 容错率
    /*hints.put(EncodeHintType.MARGIN, 2); // default is 4
    hints.put(EncodeHintType.MAX_SIZE, 350);
    hints.put(EncodeHintType.MIN_SIZE, 100);*/
    BitMatrix bitMatrix = new QRCodeWriter().encode(content,
    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循环是图片横列扫描的结果
    for (int x = 0; x < QR_WIDTH; x++) {
    if (bitMatrix.get(x, y)) {
    if (x < QR_WIDTH / 2 && y < QR_HEIGHT / 2) {
    pixels[y * QR_WIDTH + x] = 0xFF0094FF;// 蓝色
    Integer.toHexString(new Random().nextInt());
    } else if (x < QR_WIDTH / 2 && y > QR_HEIGHT / 2) {
    pixels[y * QR_WIDTH + x] = 0xFFFED545;// 黄色
    } else if (x > QR_WIDTH / 2 && y > QR_HEIGHT / 2) {
    pixels[y * QR_WIDTH + x] = 0xFF5ACF00;// 绿色
    } else {
    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);
    // 获取图片宽高
    int logoWidth = logoBmp.getWidth();
    int logoHeight = logoBmp.getHeight();
    if (QR_WIDTH == 0 || QR_HEIGHT == 0) {
    return null;
    }
    if (logoWidth == 0 || logoHeight == 0) {
    return bitmap;
    }
    // 图片绘制在二维码中央,合成二维码图片
    // logo大小为二维码整体大小的1/5
    float scaleFactor = QR_WIDTH * 1.0f / 5 / logoWidth;
    try {
    Canvas canvas = new Canvas(bitmap);
    canvas.drawBitmap(bitmap, 0, 0, null);
    canvas.scale(scaleFactor, scaleFactor, QR_WIDTH / 2,
    QR_HEIGHT / 2);
    canvas.drawBitmap(logoBmp, (QR_WIDTH - logoWidth) / 2,
    (QR_HEIGHT - logoHeight) /2, null);
    canvas.save(Canvas.ALL_SAVE_FLAG);
    canvas.restore();
    return bitmap;
    } catch (Exception e) {
    bitmap = null;
    e.getStackTrace();
    }
    } catch (WriterException e) {
    e.printStackTrace();
    }
    return null;
    }
    /**
    * 获取十六进制的颜色代码.例如 "#6E36B4" , For HTML ,
    * @return String
    */
    public static String getRandColorCode(){
    String r,g,b;
    Random random = new Random();
    r = Integer.toHexString(random.nextInt(256)).toUpperCase();
    g = Integer.toHexString(random.nextInt(256)).toUpperCase();
    b = Integer.toHexString(random.nextInt(256)).toUpperCase();
    r = r.length()==1 ? "0" + r : r ;
    g = g.length()==1 ? "0" + g : g ;
    b = b.length()==1 ? "0" + b : b ;
    return r+g+b;
    }
    /**
    * 根据指定内容生成自定义宽高的二维码图片
    *
    * @param content
    * 需要生成二维码的内容
    * @param width
    * 二维码宽度
    * @param height
    * 二维码高度
    * @throws WriterException
    * 生成二维码异常
    */
    public static Bitmap makeQRImage(String content, int width, int height)
    throws WriterException {
    Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
    hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
    // 图像数据转换,使用了矩阵转换
    BitMatrix bitMatrix = new QRCodeWriter().encode(content,
    BarcodeFormat.QR_CODE, width, height, hints);
    int[] pixels = new int[width * height];
    // 按照二维码的算法,逐个生成二维码的图片,两个for循环是图片横列扫描的结果
    for (int y = 0; y < height; y++) {
    for (int x = 0; x < width; x++) {
    if (bitMatrix.get(x, y))
    pixels[y * width + x] = 0xff000000;
    else
    pixels[y * width + x] = 0xffffffff;
    }
    }
    // 生成二维码图片的格式,使用ARGB_8888
    Bitmap bitmap = Bitmap.createBitmap(width, height,
    Bitmap.Config.ARGB_8888);
    bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
    return bitmap;
    }
    /**
    * 从资源文件中获取图片转化成bitmap类型
    *
    * @param context
    * 上下文
    * @param drawableId
    * 资源文件id
    * @return
    */
    public static Bitmap gainBitmap(Context context, int drawableId) {
    Bitmap bmp = BitmapFactory.decodeResource(context.getResources(),
    drawableId);
    return bmp;
    }
    /**
    * 在图片右下角添加水印
    *
    * @param srcBMP
    * 原图
    * @param markBMP
    * 水印88图片
    * @return 合成水印后的图片
    */
    public static Bitmap composeWatermark(Bitmap srcBMP, Bitmap markBMP) {
    if (srcBMP == null) {
    return null;
    }
    // 创建一个新的和SRC长度宽度一样的位图
    Bitmap newb = Bitmap.createBitmap(srcBMP.getWidth(),
    srcBMP.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas cv = new Canvas(newb);
    // 在 0,0坐标开始画入原图
    cv.drawBitmap(srcBMP, 0, 0, null);
    // 在原图的右下角画入水印
    cv.drawBitmap(markBMP, srcBMP.getWidth() - markBMP.getWidth()*4/5,
    srcBMP.getHeight()*2/7 , null);
    // 保存
    cv.save(Canvas.ALL_SAVE_FLAG);
    // 存储
    cv.restore();
    return newb;
    }
    /**
    * 给二维码图片加背景
    *
    */
    public static Bitmap addBackground(Bitmap foreground,Bitmap background){
    int bgWidth = background.getWidth();
    int bgHeight = background.getHeight();
    int fgWidth = foreground.getWidth();
    int fgHeight = foreground.getHeight();
    Bitmap newmap = Bitmap
    .createBitmap(bgWidth, bgHeight, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(newmap);
    canvas.drawBitmap(background, 0, 0, null);
    canvas.drawBitmap(foreground, (bgWidth - fgWidth) / 2,
    (bgHeight - fgHeight) *3 / 5+70, null);
    canvas.save(Canvas.ALL_SAVE_FLAG);
    canvas.restore();
    return newmap;
    }
    }

简单黑色二维码

mainactivity监听调用

//根据要转化成二维码的信息的多少定义生成二维码的大小
bitmap = BitmapUtil.makeQRImage(trim,400,400);

BitmapUtil调用的是

/**
    * 根据指定内容生成自定义宽高的二维码图片
    *
    * @param content
    * 需要生成二维码的内容
    * @param width
    * 二维码宽度
    * @param height
    * 二维码高度
    * @throws WriterException
    * 生成二维码异常
    */
    public static Bitmap makeQRImage(String content, int width, int height)
    throws WriterException {
    Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
    hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
    // 图像数据转换,使用了矩阵转换
    BitMatrix bitMatrix = new QRCodeWriter().encode(content,
    BarcodeFormat.QR_CODE, width, height, hints);
    int[] pixels = new int[width * height];
    // 按照二维码的算法,逐个生成二维码的图片,两个for循环是图片横列扫描的结果
    for (int y = 0; y < height; y++) {
    for (int x = 0; x < width; x++) {
    if (bitMatrix.get(x, y))
    pixels[y * width + x] = 0xff000000;
    else
    pixels[y * width + x] = 0xffffffff;
    }
    }
    // 生成二维码图片的格式,使用ARGB_8888
    Bitmap bitmap = Bitmap.createBitmap(width, height,
    Bitmap.Config.ARGB_8888);
    bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
    return bitmap;
    }

彩色二维码

把上面

if (bitMatrix.get(x, y))
pixels[y * width + x] = 0xff000000;
else
pixels[y * width + x] = 0xffffffff;

改为

if (x < QR_WIDTH / 2 && y < QR_HEIGHT / 2) {
pixels[y * QR_WIDTH + x] = 0xFF0094FF;// 蓝色
Integer.toHexString(new Random().nextInt());
} else if (x < QR_WIDTH / 2 && y > QR_HEIGHT / 2) {
pixels[y * QR_WIDTH + x] = 0xFFFED545;// 黄色
} else if (x > QR_WIDTH / 2 && y > QR_HEIGHT / 2) {
pixels[y * QR_WIDTH + x] = 0xFF5ACF00;// 绿色
} else {
pixels[y * QR_WIDTH + x] = 0xFF000000;// 黑色
}
} else {
pixels[y * QR_WIDTH + x] = 0xffffffff;// 白色
}

二维码加头像

mainactivity监听调用

//中间头像转成bitmap类型
bitmap = BitmapUtil.gainBitmap(getApplicationContext(), R.drawable.image1);
//加头像把头像放到二维码里 1.头像2.获取要转化成二维码的信息3.宽4.高
 bitmap = BitmapUtil.makeQRImage(bitmap,trim,400,400);

BitmapUtil调用的是

/**
    * 根据指定内容生成自定义宽高的二维码图片
    *
    * param logoBm
    * logo图标
    * param content
    * 需要生成二维码的内容
    * param width
    * 二维码宽度
    * param height
    * 二维码高度
    * throws WriterException
    * 生成二维码异常
    */
    public static Bitmap makeQRImage(Bitmap logoBmp, String content,
    int QR_WIDTH, int QR_HEIGHT) throws WriterException {
    try {
    // 图像数据转换,使用了矩阵转换
    Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
    hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
    hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);// 容错率
    /*hints.put(EncodeHintType.MARGIN, 2); // default is 4
    hints.put(EncodeHintType.MAX_SIZE, 350);
    hints.put(EncodeHintType.MIN_SIZE, 100);*/
    BitMatrix bitMatrix = new QRCodeWriter().encode(content,
    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循环是图片横列扫描的结果
    for (int x = 0; x < QR_WIDTH; x++) {
    if (bitMatrix.get(x, y)) {
    if (x < QR_WIDTH / 2 && y < QR_HEIGHT / 2) {
    pixels[y * QR_WIDTH + x] = 0xFF0094FF;// 蓝色
    Integer.toHexString(new Random().nextInt());
    } else if (x < QR_WIDTH / 2 && y > QR_HEIGHT / 2) {
    pixels[y * QR_WIDTH + x] = 0xFFFED545;// 黄色
    } else if (x > QR_WIDTH / 2 && y > QR_HEIGHT / 2) {
    pixels[y * QR_WIDTH + x] = 0xFF5ACF00;// 绿色
    } else {
    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);
    // 获取图片宽高
    int logoWidth = logoBmp.getWidth();
    int logoHeight = logoBmp.getHeight();
    if (QR_WIDTH == 0 || QR_HEIGHT == 0) {
    return null;
    }
    if (logoWidth == 0 || logoHeight == 0) {
    return bitmap;
    }
    // 图片绘制在二维码中央,合成二维码图片
    // logo大小为二维码整体大小的1/5
    float scaleFactor = QR_WIDTH * 1.0f / 5 / logoWidth;
    try {
    Canvas canvas = new Canvas(bitmap);
    canvas.drawBitmap(bitmap, 0, 0, null);
    canvas.scale(scaleFactor, scaleFactor, QR_WIDTH / 2,
    QR_HEIGHT / 2);
    canvas.drawBitmap(logoBmp, (QR_WIDTH - logoWidth) / 2,
    (QR_HEIGHT - logoHeight) /2, null);
    canvas.save(Canvas.ALL_SAVE_FLAG);
    canvas.restore();
    return bitmap;
    } catch (Exception e) {
    bitmap = null;
    e.getStackTrace();
    }
    } catch (WriterException e) {
    e.printStackTrace();
    }
    return null;
    }
/**
    * 从资源文件中获取图片转化成bitmap类型
    *
    * @param context
    * 上下文
    * @param drawableId
    * 资源文件id
    * @return
    */
    public static Bitmap gainBitmap(Context context, int drawableId) {
    Bitmap bmp = BitmapFactory.decodeResource(context.getResources(),
    drawableId);
    return bmp;
    }

二维码加水印

先生成二维码

然后mainactivity监听再调用

//加水印 1.生成的二维码2.水印图片
 bitmap = BitmapUtil.composeWatermark( bitmap ,BitmapUtil.gainBitmap(getApplicationContext(), R.drawable.z));

BitmapUtil调用的是

/**
    * 在图片右下角添加水印
    *
    * @param srcBMP
    * 原图
    * @param markBMP
    * 水印88图片
    * @return 合成水印后的图片
    */
    public static Bitmap composeWatermark(Bitmap srcBMP, Bitmap markBMP) {
    if (srcBMP == null) {
    return null;
    }
    // 创建一个新的和SRC长度宽度一样的位图
    Bitmap newb = Bitmap.createBitmap(srcBMP.getWidth(),
    srcBMP.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas cv = new Canvas(newb);
    // 在 0,0坐标开始画入原图
    cv.drawBitmap(srcBMP, 0, 0, null);
    // 在原图的右下角画入水印
    cv.drawBitmap(markBMP, srcBMP.getWidth() - markBMP.getWidth()*4/5,
    srcBMP.getHeight()*2/7 , null);
    // 保存
    cv.save(Canvas.ALL_SAVE_FLAG);
    // 存储
    cv.restore();
    return newb;
    }

二维码加背景

先生成二维码

然后mainactivity监听再调用

//加背景 1.生成的二维码2.背景图片
 bitmap =  BitmapUtil.addBackground(bitmap, BitmapUtil.gainBitmap(getApplicationContext(), R.drawable.image2));

BitmapUtil调用的是

/**
    * 给二维码图片加背景
    *
    */
    public static Bitmap addBackground(Bitmap foreground,Bitmap background){
    int bgWidth = background.getWidth();
    int bgHeight = background.getHeight();
    int fgWidth = foreground.getWidth();
    int fgHeight = foreground.getHeight();
    Bitmap newmap = Bitmap
    .createBitmap(bgWidth, bgHeight, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(newmap);
    canvas.drawBitmap(background, 0, 0, null);
    canvas.drawBitmap(foreground, (bgWidth - fgWidth) / 2,
    (bgHeight - fgHeight) *3 / 5+70, null);
    canvas.save(Canvas.ALL_SAVE_FLAG);
    canvas.restore();
    return newmap;
    }
时间: 2024-10-09 20:52:33

Android之自定义生成彩色二维码的相关文章

jquery.qrcode二维码插件生成彩色二维码

jquery.qrcode.js 是居于jquery类库的绘制二维码的插件,用它来实现二维码图形渲染支持canvas和table两种绘图方式. (jquery.qrcode.js 设置显示方式为table时在webkit核心浏览器如chrome下会变形) 以下是测试代码(增加了颜色控制,可以设置4个区块的颜色值,需要指定render为table.),效果: jquery.qrcode生成彩色二维码" src="http://www.jbxue.com/d/file/2014/08/20

Android应用--QR的生成(二维码)

二维码的定义: 二维码(2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的. 在许多种类的二维条码中,常用的码制有:Data Matrix, Maxi Code, Aztec, QR Code, Vericode, PDF417, Ultracode, Code 49, Code 16K等.1.堆叠式/行排式二维条码,如,Code 16K.Code 49.PDF417(如下图)等. 2.矩阵式二维码,最流行莫

基于zxing的彩色二维码生成与解析

最近正在封装一套基于H5的APP开发平台,而二维码是APP中必不可少的功能. 以前做WEB开发的时候采用的是JS生成条形码和二维码,虽然简洁易用,但是无法添加logo,彩色美化等功能, 由于以前没有接触过图像编程,只好查阅了大量的网络资料,在前人的经验和基础之上,封装了一个基于zxing的工具类, 该工具类目前比较简单,只是实现了普通二维码.logo二维码.彩色二维码和二维码条形码解析几个功能. 根据此工具类可扩展生成LOGO+文字的二维码,暂时不需要没有封装. 采用zxing生成的条形码,无法

Android之扫描二维码和根据输入信息生成名片二维码

开发中常常遇到二维码扫码操作,前段时间做项目要实现该功能,于是网上查找资料实现了,现在把他做出来给各位分享一下,主要包含了二维码扫描和生成二维码名片. 先来看看效果图:   生成的二维码,打开微信扫一扫即可看到生成的名片了,可以保存在联系人中. 二维码扫描方式如下图: 生成名片代码 public class BusinessCardActivity extends Activity{ private EditText et_only_company; private EditText et_on

Android开发学习之路-二维码学习

这个月装逼有点少了,为什么呢,因为去考软件射鸡师了,快到儿童节了,赶紧写篇博纪念一下逝去的青春,唔,请忽略这句话. 二维码其实有很多种,但是我们常见的微信使用的是一种叫做QRCode的二维码,像下面这样的,可以放心的扫,这只是我的博客主页链接啦: 关于QR码编码的二维码,我们要知道几个特点: 1. 扫描时可以从各个角度去扫,也就是旋转多少度都没关系,不信吗?下次去肯德基买单试试咯. 2. 二维码有容错率,容错率越大,生成的二维码也就越复杂,但是越不容易出错,并且,当二维码被遮挡的时候也越容易扫描

iOS 花式二维码生成和二维码识别

iOS 原生的二维码识别非常之棒,反正比 ZXing 和 ZBar 效果都好些,所以以后打算尽量用原生的二维码识别,然后最近把原生的二维码生成也顺便做了一遍,并且在原有基础上加了一些样式参数,封了一个小库方便以后使用. 项目地址:https://github.com/EyreFree/EFQRCode EFQRCode 是一个用 Swift 编写的用来生成和识别二维码的库,它基于系统二维码生成与识别进行开发. 生成:利用输入的水印图/图标等资源生成各种艺术二维码: 识别:识别率比 iOS 原生二

公司开发的APP,如何生成一个二维码,供客户下载使用

1.其实和简单,因为一般的用户使用扫一扫,大多数都是用微信自带的扫一扫工具 而,微信打开的二维码页面,会自动屏蔽apk文件,所以显然把apk的url生成一个二维码,让用户扫一扫就能直接下载,这样是行不通的. 2.正确的做法应该是这样的, (1).先做一个下载页面,放在你的服务器上,IOS和android链接都放上去,显得比较专业,如果ios没有做好,就不要放 如下所示: 2.把下载页面的url地址,通过“草料二维码”生成一个二维码 3.如果是在微信扫一扫打开的,当用户点击"Android下载&q

PHP生成QRCode二维码

<?php //引入 phpqrcode 类库 //phpqrcode下载地址:https://github.com/t0k4rt/phpqrcode require_once "phpqrcode/qrlib.php"; //第一种(缺省下在网页中生成二维码) //调用QRCode类下的png静态方法 QRcode::png("this is a qrcode"); $content = "this is a qrcode"; //内容

如何在条码标签打印软件中导入数据库并做出彩色二维码

我们现在看到的二维码大部分都是黑白相间的,但是二维码也是有彩色的,那么彩色二维码是怎么做出来的呢,如果有txt的数据文件,如何实现导入数据库生成可变的彩色二维码,接下来我们就在我们的中琅条码标签软件中为大家演示一下.1.新建标签打开条码标签打印软件,出现一个文档设置文本框,点击新建,我们可以在这里设置纸张上要打印的标签的行数和列数,以及标签尺寸.2.导入数据库在中琅条码打印软件左上角,选择"文件-数据库设置",弹出的数据库设置窗口中,点击添加-选择TXT文本数据源,出现一个文本数据源管