Android使用ZXing生成带图片的二维码
发布日期:2021-08-29 19:53:11 浏览次数:2 分类:技术文章

本文共 3587 字,大约阅读时间需要 11 分钟。

效果图如下:

制作过程很简单的就是在原始的二维码图片上添加一个logn图标,代码的注释写得很详细,也就不给大家啰嗦了

package com.example.day44_02_qrcodewithlogin;import java.util.HashMap;import java.util.Map;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.os.Bundle;import android.view.Menu;import android.widget.ImageView;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;public class MainActivity extends Activity {    private ImageView imageView_main ;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		initView();	}	private void initView() {		imageView_main = (ImageView) findViewById(R.id.imageView_main);		String content = "我们要毕业了";		createQRCode(content,500,500);	}    	/**	 * 用于创建一个二维码	 * @param content	 * @param width	 * @param height	 */	private void createQRCode(String content, int width, int height) {				try {			//1,创建实例化对象			QRCodeWriter writer = new QRCodeWriter() ;			//2,设置字符集			Map
map = new HashMap
(); map.put(EncodeHintType.CHARACTER_SET, "UTF-8"); //3,通过encode方法将内容写入矩阵对象 BitMatrix matrix = writer.encode(content, BarcodeFormat.QR_CODE, width, height,map); //4,定义一个二维码像素点的数组,向每个像素点中填充颜色 int[] pixels = new int[width*height]; //5,往每一像素点中填充颜色(像素没数据则用黑色填充,没有则用彩色填充,不过一般用白色) for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { if (matrix.get(j, i)) { pixels[i*width+j] = 0xff000000; }else { pixels[i*width+j] = 0xffffffff; } } } //6,创建一个指定高度和宽度的空白bitmap对象 Bitmap bm_QR = Bitmap.createBitmap(width, height, Config.ARGB_8888); //7,将每个像素的颜色填充到bitmap对象 bm_QR.setPixels(pixels, 0, width, 0, 0, width, height); //8,创建一个bitmap对象用于作为其图标 Bitmap bm_login = BitmapFactory.decodeResource(getResources(), R.drawable.img_kf_qq); //9,创建一个方法在二维码上添加一张图片 if (addLogin(bm_QR,bm_login) != null) { imageView_main.setImageBitmap(addLogin(bm_QR,bm_login)); } } catch (WriterException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 用于向创建的二维码中添加一个logn * @param bm_QR * @param bm_login * @return */ private Bitmap addLogin(Bitmap bm_QR, Bitmap bm_login) { if (bm_QR == null) { return null; } if (bm_login == null) { return bm_QR ; } //获取图片的宽高 int bm_QR_Width = bm_QR.getWidth() ; int bm_QR_Height = bm_QR.getHeight(); int bm_login_Width = bm_login.getWidth() ; int bm_login_Height = bm_login.getHeight(); //设置logn的大小为二维码整体大小的1/5 float scale_login = bm_QR_Width*1.0f /5/bm_login_Width ; Bitmap bitmap = Bitmap.createBitmap(bm_QR_Width, bm_QR_Height, Bitmap.Config.ARGB_8888); try { Canvas canvas = new Canvas(bitmap); canvas.drawBitmap(bm_QR, 0, 0, null); canvas.scale(scale_login, scale_login, bm_QR_Width / 2, bm_QR_Height / 2); canvas.drawBitmap(bm_login, (bm_QR_Width - bm_login_Width) / 2, (bm_QR_Height - bm_login_Height) / 2, null); canvas.save(Canvas.ALL_SAVE_FLAG); canvas.restore(); } catch (Exception e) { bitmap = null; e.getStackTrace(); } return bitmap; } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; }}

  

转载于:https://www.cnblogs.com/wjtaigwh/p/4960143.html

转载地址:https://blog.csdn.net/weixin_34008933/article/details/93218352 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:PHP获取指定时间的上个月
下一篇:20172326《程序设计与数据结构》实验一实验报告

发表评论

最新留言

不错!
[***.144.177.141]2024年04月10日 07时24分52秒