自定义生成二维码,可添加logo
来源:互联网 发布:上海发布app软件下载 编辑:程序博客网 时间:2024/06/06 03:14
在敲代码之前要记得导入jar包 core-3.2.1.jar 复制百度搜索就可以下载得到
package com.gss.zxingdemo;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.ImageView;import android.widget.TextView;import com.google.zxing.BarcodeFormat;import com.google.zxing.EncodeHintType;import com.google.zxing.common.BitMatrix;import com.google.zxing.qrcode.QRCodeWriter;import com.xys.libzxing.zxing.activity.CaptureActivity;import java.util.HashMap;import java.util.Map;public class MainActivity extends AppCompatActivity { private ImageView erweima; private ImageView img; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); erweima = (ImageView) findViewById(R.id.erweima); img = (ImageView) findViewById(R.id.diyerweima); //点击按钮吧ip地址生成二维码 findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Bitmap bitmap = generateBitmap("http://blog.csdn.net/u012702547/article/details/51501350", 400, 400); Bitmap bitmap2 = addBackground(bitmap, BitmapFactory.decodeResource(getResources(), R.drawable.background)); erweima.setImageBitmap(bitmap2); } }); //点击生成带logo的二维码 findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Bitmap bitmap = generateBitmap("孙明亮不是傻逼,孙明亮是臭傻逼", 600, 600); Bitmap logo = BitmapFactory.decodeResource(getResources(), R.drawable.jjjj); Bitmap bitmap1 = addLogo(bitmap, logo); img.setImageBitmap(bitmap1); } }); } /** * 生成二维码 */ private Bitmap generateBitmap(String content, int width, int height) { QRCodeWriter qrCodeWriter = new QRCodeWriter(); Map<EncodeHintType, String> hints = new HashMap<>(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); try { BitMatrix encode = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, width, height, hints); int[] pixels = new int[width * height]; for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { if (encode.get(j, i)) { pixels[i * width + j] = 0x00000000; } else { pixels[i * width + j] = 0xffffffff; } } } return Bitmap.createBitmap(pixels, 0, width, width, height, Bitmap.Config.RGB_565); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 给二维码图片加背景 */ 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; } /** * 添加图标 * * @param qrBitmap * @param logoBitmap * @return */ private Bitmap addLogo(Bitmap qrBitmap, Bitmap logoBitmap) { int qrBitmapWidth = qrBitmap.getWidth(); int qrBitmapHeight = qrBitmap.getHeight(); int logoBitmapWidth = logoBitmap.getWidth(); int logoBitmapHeight = logoBitmap.getHeight(); Bitmap blankBitmap = Bitmap.createBitmap(qrBitmapWidth, qrBitmapHeight, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(blankBitmap); canvas.drawBitmap(qrBitmap, 0, 0, null); canvas.save(Canvas.ALL_SAVE_FLAG); float scaleSize = 1.0f; while ((logoBitmapWidth / scaleSize) > (qrBitmapWidth / 5) || (logoBitmapHeight / scaleSize) > (qrBitmapHeight / 5)) { scaleSize *= 2; } float sx = 1.0f / scaleSize; canvas.scale(sx, sx, qrBitmapWidth / 2, qrBitmapHeight / 2); canvas.drawBitmap(logoBitmap, (qrBitmapWidth - logoBitmapWidth) / 2, (qrBitmapHeight - logoBitmapHeight) / 2, null); canvas.restore(); return blankBitmap; }}
布局的话一个按钮对应一个imageView,二维码是需要imageView来显示的
阅读全文
0 0
- 自定义生成二维码,可添加logo
- java生成二维码,可添加logo和文字
- java生成二维码,可添加logo和文字
- JAVA 生成二维码图片 可加Logo
- 使用谷歌zxing工具生成二维码(可添加logo)
- Android生成二维码及添加logo
- Zxing生成二维码和添加Logo
- Android之二维码生成并添加Logo
- 使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
- ZXing生成二维码,以及给二维码添加Logo
- c# QRCode生成二维码 web 可带logo
- java zxing二维码(可带logo)、条形码生成解析
- Zxing实现二维码生成和解析,可带logo
- Android:使用ZXing生成二维码(支持添加Logo图案)
- Android:使用ZXing生成二维码(支持添加Logo图案)
- 生成二维码 及 添加外边框和中间logo
- android 生成二维码 中间可以添加小logo
- 二维码生成(CIFilter生成二维码,清晰度高的二维码,自定义颜色的二维码,带logo的二维码)
- android studio的快捷键
- 机器学习 第四周 总结 知识点
- Maya之桥接
- 解决python3下mysqldb不支持
- 解决图片错位闪烁问题
- 自定义生成二维码,可添加logo
- XListView上拉加载下拉刷新
- hadoop异常: Wrong FS: hdfs://192.168.1.xx:9000/output, expected: file:///
- ios 推送证书的配置
- 最小二乘矩阵形式python实现(线性)
- 计算机视觉领域经典论文源码
- 中科院NLPIR/ICTCLAS2016分词系统找不到Configure.xml
- json字符串解析
- Java中的Filter过滤器