生成二维码
来源:互联网 发布:石英表哪个牌子好 知乎 编辑:程序博客网 时间:2024/06/05 20:03
在libs里导zxing包(在软件里)public class MainActivity extends AppCompatActivity implements View.OnClickListener { private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = (ImageView) findViewById(R.id.iv); Button bt1 = (Button) findViewById(R.id.bt1); Button bt2 = (Button) findViewById(R.id.bt2); bt1.setOnClickListener(this); bt2.setOnClickListener(this); } //生成二维码 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); 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 (WriterException 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; } * 添加图标 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; } @Override public void onClick(View v) { Bitmap bitmap = null; switch (v.getId()) { case R.id.bt1: bitmap = generateBitmap("我爱你", 500, 500); // Bitmap bitmap2 = addBackground(bitmap, BitmapFactory.decodeResource(getResources(), R.mipmap.b)); iv.setImageBitmap(bitmap); break; case R.id.bt2: bitmap = generateBitmap("http://blog.csdn.net/lmj623565791/article/details/38067475/", 400, 400); Bitmap logo = BitmapFactory.decodeResource(getResources(), R.drawable.a); Bitmap bitmap1 = addLogo(bitmap, logo); iv.setImageBitmap(bitmap1); break; } }}XML:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:gravity="center_horizontal" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/bt1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="生成二维码" /> <Button android:id="@+id/bt2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="自定义生成二维码" /> <ImageView android:id="@+id/iv" android:layout_width="wrap_content" android:layout_height="wrap_content"/></LinearLayout>
阅读全文
0 0
- java二维码 生成二维码
- 生成二维码、识别二维码
- 扫描二维码+生成二维码
- 生成二维码、自定义二维码
- 生成二维码
- 二维码生成
- 二维码生成
- 生成二维码
- 二维码生成
- 二维码生成
- 生成二维码
- 二维码生成
- 生成二维码
- 二维码--生成
- 生成二维码
- 生成二维码
- 二维码生成
- 生成二维码
- pip --upgrade批量更新过期的python库
- GitChat · 运维 | 携程运维工作流平台的演进之路
- MySQL 时间日期类型和相关函数
- linux系统weblogic12c安装
- windows之取消微软账号与本地账户的绑定
- 生成二维码
- 设置jsp页面编码格式
- dom4j 解析xml
- 简单字符设备中设计的结构体
- JAVA集合类Collection浅析
- 详解PHP操作MySQL数据库
- Layui富文本编辑器图片上传接口(.NET C#)
- vim实现复制字符串到命令行
- Spring aop原理