标签:
private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = ((ImageView) findViewById(R.id.iv)); } public void btnClick(View view) { //1.数据源 //2.生成的Bitmap的宽度 //3.生成的Bitmap的高度 Bitmap bitmap = getQRCodeBitmap("祝大家找到一个好工作!", 400, 400); iv.setImageBitmap(bitmap); } private Bitmap getQRCodeBitmap(String content, int width, int height) { QRCodeWriter writer = new QRCodeWriter(); Map<EncodeHintType, String> hint = new HashMap<>(); //文本的编码格式为UTF-8 hint.put(EncodeHintType.CHARACTER_SET, "utf-8"); //将文本信息转换为二维码 //1.数据源 //2.转换为二维码 //3.4.生成的二维数据的宽高 //5.文本的编码格式 try { //encode的返回结果是一个二维数组,该数组中保存着转换后的数据信息 BitMatrix bitMatrix = writer.encode(content, BarcodeFormat.QR_CODE, width, height, hint); int[] pixles = new int[width * height]; for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { //该点如果有数据则返回true,否则返回false if (bitMatrix.get(j, i)) { //如果该点有数据,则该点为黑色 pixles[i * width + j] = 0x00000000; } else { pixles[i * width + j] = 0xffffffff; } } } //1.Bitmap中所有的像素点信息 //2.偏移量 //3.生成的Bitmap每行有多少个像素点 //4.5.生成的Bitmap的宽高 //6.色彩模式 return Bitmap.createBitmap(pixles, 0, width, width, height, Bitmap.Config.RGB_565); } catch (WriterException e) { e.printStackTrace(); } return null; }
标签:
原文地址:http://www.cnblogs.com/anni-qianqian/p/5466516.html