玩转安卓带logo的二维码

2024-09-03 02:32

本文主要是介绍玩转安卓带logo的二维码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

好久没有写博客了,快元旦了公司的事情也不是很多,刚好和朋友一起出去玩玩,朋友是搞php的说到了每天在公司都是搞些什么二维码和微信支付的相关东西,因为上班的时间不忙,所以随便来搞下。

二维码(Quick Response Code),又称二维条码,它是用特定的几何图形按一定规律在平面(二维方向)上分布的黑白相间的图形,是所有信息数据的一把钥匙。在现代商业活动中,如果一个产品是不能通过二维码来进行访问什么的,显然是不成功的。用的比较多的生成二维码的jar包有Zxing.jar和core.jar,其实里面用到的都是com.google.zxing里面的东西,基本上是大同小异。

直接上代码:

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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.MainActivity" >

    <ImageView
        android:id="@+id/code"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="@string/hello_world" />

</RelativeLayout>

MainActivity

package com.example;


import java.util.Hashtable;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.os.Bundle;
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 code;
    private final int  QR_WIDTH=300;
    private final int  QR_HEIGHT=300;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  code=(ImageView) findViewById(R.id.code);
  createImage("weixin") ;
 }
 // 生成QR图
    private void createImage(String text) {
        try {
            // 需要引入core包
            QRCodeWriter writer = new QRCodeWriter();
            // 把输入的文本转为二维码
            BitMatrix martix = writer.encode(text, BarcodeFormat.QR_CODE,
                    QR_WIDTH, QR_HEIGHT);

         //图像数据转换,使用了矩阵转换
        Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
            BitMatrix bitMatrix = new QRCodeWriter().encode(text,
                    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)) {
                        pixels[y * QR_WIDTH + x] = 0xff000000;//黑色
                    } else {
                        pixels[y * QR_WIDTH + x] = 0xffffffff;//白色
                    }

                }
            }
      //------------------添加图片部分------------------//
   Bitmap logoBmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
            Bitmap bitmap = Bitmap.createBitmap(QR_WIDTH, QR_HEIGHT,
                    Bitmap.Config.ARGB_8888);

//设置像素点

            bitmap.setPixels(pixels, 0, QR_WIDTH, 0, 0, QR_WIDTH, QR_HEIGHT);
           
            Canvas canvas = new Canvas(bitmap);
         //二维码
         canvas.drawBitmap(bitmap, 0,0, null);
         //图片绘制在二维码中央,合成二维码图片
   canvas.drawBitmap(logoBmp, bitmap.getWidth() / 2
     - logoBmp.getWidth() / 2, bitmap.getHeight()
     / 2 - logoBmp.getHeight() / 2, null);
   //------------------添加logo部分------------------//
            code.setImageBitmap(bitmap);
         
        } catch (WriterException e) {
            e.printStackTrace();
        }
    }
 
}

 

这篇关于玩转安卓带logo的二维码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1131766

相关文章

秒变高手:玩转CentOS 7软件更换的方法大全

在 CentOS 7 中更换软件源可以通过以下步骤完成。更换源可以加快软件包的下载速度,特别是当默认源速度较慢时。以下是详细步骤: 前言 为了帮助您解决在使用CentOS 7安装不了软件速度慢的问题,我们推出了这份由浪浪云赞助的教程——“CentOS7如何更换软件源加快下载速度”。 浪浪云,以他们卓越的弹性计算、云存储和网络服务受到广泛好评,他们的支持和帮助使得我们可以将最前沿的技术知识分

flutter开发实战-flutter build web微信无法识别二维码及小程序码问题

flutter开发实战-flutter build web微信无法识别二维码及小程序码问题 GitHub Pages是一个直接从GitHub存储库托管的静态站点服务,‌它允许用户通过简单的配置,‌将个人的代码项目转化为一个可以在线访问的网站。‌这里使用flutter build web来构建web发布到GitHub Pages。 最近通过flutter build web,通过发布到GitHu

全能AI神器!工作效率提升80倍!Zmo.ai带你玩转AI做图!

今天,我要给大家介绍一款神器:Zmo.ai。 这个平台简直是做图神器,集多种功能于一身,让你像专业人士一样轻松创建和编辑图像,不需要任何美术与设计基础,真的非常适合我们这些“手残党”! 我们只需单击按钮即可从文本或图像生成令人惊叹的 AI 艺术、图像、动漫和逼真的照片,最关键的是它的功能真的很全啊! Zmo.ai旗下产品分类: AI照片生成器 AI动漫生成器 AI照片编辑器 A

玩转Python Turtle库,实现满屏飘字的魔法!

前言     本文将教你如何使用Python的Turtle库,通过简单的编程实现满屏飘字的炫酷效果。无需复杂的编程知识,跟着我们的步骤,你也可以成为编程小达人! 效果展示 开发过程 一、准备工作 首先,确保你的电脑上已经安装了Python环境。然后,你需要安装或更新Turtle库(通常Python安装时自带了Turtle库)。 二、编写代码 接下来,我们将通过编写一个简单的P

如何玩转保险行业场景下的存储和数据?

近年来,随着云计算、大数据、移动互联网、「联网+」等技术的飞速发展,我们身边的每个行业都在发生着巨大的变化。 保险行业也面临着竞争加剧、创新加速的局面,尤其是去年保监会提出所有保险公司都要实施双录系统,即投保时需要录音录像,这些变化对保险企业的信息系统提出了越来越高的要求。 本文从数据的存储、传输以及应用封装等角度分析了保险行业面临的挑战,并基于 QingCloud 完整的企业级云计算平台和服

NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001

由于需要对NFI进行汉化,以及二次开发,首先要下载源码以后编辑通过,NIFI的源码,项目非常多,编译过程中需要编译超过570个jar包,同时编译过程很慢需要30多分钟. 1.首先下载NIFI源码,根据需要下载对应版本: https://github.com/kemixkoo/orchsym-runtime/   首先介绍一下,这个是一个公司根据nifi进行定制开发的,已经汉化,但是不能商

【python 图片识别】python识别图片是不是包含二维码

近几天在研究二维码的识别,主要是通过python代码来识别特定图片内是否包含二维码。方法有分类,还有下面我介绍的直接法。 需要安装库 pip install pyzbar pip install opencv-python 我们 先准备些二维码 总共有11个二维码。 下面我们进行二维码识别: # -*- coding: utf-8 -*-import osfrom pyzba

PDF样本图册转换为一个二维码,随时扫码打开无需印刷

在这个数字化时代,纸质样本图册已成为过去。如今,一切都变得触手可及,包括我们的PDF样本图册。想象一下,将这些图册转换为一个二维码,让客户随时扫码打开,无需印刷,这将带来多大的便利和环保效益!接下来就让我来教你如何轻松实现PDF样本图册到二维码的转换,让您与时俱进,走在环保科技的前沿吧。 1. 准备好制作工具:FLBOOK在线制作电子杂志平台 2. 转换文档:点击开始

Python|玩转 Excel:Pandas、openpyxl、pywin32

文章目录 引言Pandas读取 Excel写入 Excel数据操作样式设置数据验证公式支持 openpyxl读取 Excel写入 Excel数据操作样式设置数据验证公式支持图表创建 xlrd / xlwt读取 Excel(xlrd)写入 Excel(xlwt) pyxlsb读取 Excel(pyxlsb) xlsxwriter写入 Excel样式设置公式支持图表创建 pywin32 (Win

<数据集>二维码识别数据集<目标检测>

数据集格式:VOC+YOLO格式 图片数量:1601张 标注数量(xml文件个数):1601 标注数量(txt文件个数):1601 标注类别数:1 标注类别名称:['QR'] 序号类别名称图片数框数1QR16016286 使用标注工具:labelImg 标注规则:对类别进行画水平矩形框 图片示例: 标注示例: