效果图如下:

制作过程很简单的就是在原始的二维码图片上添加一个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<EncodeHintType, String> map = new HashMap<EncodeHintType, String>();
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;
} }

  

Android使用ZXing生成带图片的二维码的更多相关文章

  1. Flutter生成带图片的二维码

    现在的APP中经常需要用自己的信息生成一个二维码给别人扫,下面就介绍一下Flutter中怎么生成一个带图片的二维码. 需要用到的插件qr_flutter 首先在 pubspec.yaml 文件中添加以 ...

  2. Android生成带图片的二维码

    一.问题描述 在开发中需要将信息转换为二维码存储并要求带有公司的logo,我们知道Google的Zxing开源项目就很好的帮助我们实现条形码.二维码的生成和解析,但带有logo的官网并没有提供demo ...

  3. C# ZXing.Net生成二维码、识别二维码、生成带Logo的二维码(二)

    1.使用ZXint.Net生成带logo的二维码 /// <summary> /// 生成带Logo的二维码 /// </summary> /// <param name ...

  4. .NET使用ZXing.NET生成中间带图片的二维码

    很久之前就有写这样的代码了,只是一直没记录下来,偶然想写成博客. 把之前的代码封装成函数,以方便理解以及调用. 基于开源的 ZXing.NET 组件,代码如下: 先添加对ZXing.NET的引用,然后 ...

  5. phpqrcode生成带logo的二维码图片及带文字的二维码图片

    <?php require_once "./phpqrcode/phpqrcode.php"; /** * 这样就可以生成二维码了,实际上在png这个方法里还有几个参数需要使 ...

  6. C#生成带logo的二维码

    带logo的二维码生成分为两步骤:首先根据输入的内容生成二维码图片,然后读取本地的logo图片,通过图片处理生成带logo的二维码. 生成的二维码效果如下: 下面直接贴出二维码生成类   QRCode ...

  7. .NET生成带Logo的二维码

    使用ThoughtWorks.QRCode生成,利用这个库来生成带Logo的二维码(就是中间嵌了一个图片的二维码),直接见代码: HttpContext context = HttpContext.C ...

  8. 涛哥的Python脚本工具箱之生成带Logo的二维码

    近期须要在二维码上加Logo,网上没有找到好用的,于是自己用python写了一个. 须要安装qrcode,PIL库 二维码简称 QR Code(Quick Response Code),学名为高速响应 ...

  9. js生成带log的二维码(qrcodejs)

    github: qrcodejs cdn: http://static.runoob.com/assets/qrcode/qrcode.min.js #qrcode #qrcode margin: 2 ...

随机推荐

  1. AppleScript

    一.资源 1.书本 2.ide: AppleSreipt Editor 3.界面辅助软件: UIBrowser 破解方法: a) ui browser -> show package conte ...

  2. AutoLayout技术选型和应用

    前言:这篇文章是笔者在项目中对布局技术进行技术选型和应用的相关介绍,供大家参考. && [self.buttonscount] > 0) { UIButton *button = ...

  3. sphinx续4-coreseek的工作原理

    原文地址:http://blog.itpub.net/29806344/viewspace-1399621/ 在分析sphix原理之前,我先澄清一下为什么经常出现coreseek这个词? 因为sphi ...

  4. html5优势

    1.首先,强化了Web网页的表现性能.除了可描绘二维图形外,还准备了用于播放视频和音频的标签.2.其次,追加了本地数据库等Web应用的功能.3.HTML5(text/html)浏览器将在错误语法的处理 ...

  5. WordPress显示备案号

    备案时,需要显示备案号,而wordpress默认模板本身不带这个信息,为了更快速应付备案,解决方案如下: 根据wp-config.php的提示 .......... /** * zh_CN本地化设置: ...

  6. String.format(转)

    转自:http://blog.csdn.net/lonely_fireworks/article/details/7962171 方便自己查阅. 常规类型的格式化 String类的format()方法 ...

  7. 【tips】判断两个整数是否是同一个数量级

    leetcode刷题的时候,需要用到,已知整数A,B,且A>B,判断AB是否是同一数量级的. 第一想到的是不停地除以10,得到每个数字的数量级再进行比较,太麻烦: 转而向转化成字符串比较,还是麻 ...

  8. 【上手centos】一、前情以及sublime_text_3安装

    笔记本自大一入手,只重装过一次系统,从不曾拆机清灰过.读研之后,日常工作与学习都在实验室进行,笔记本一直在宿舍的桌子上落灰,只偶尔打开来看个电影.上周末,心血来潮,把笔记本抱到实验室拆了清灰,以前一直 ...

  9. PMP--论文部分

    个人观点,是三个部分最简单,最容易复习的,当然,如果你没有做好一个项目的摘要和正文的背诵,连各个过程的工具输输入输出的都记不住几个,就不用往下看了,以上内容的观点,至少保证真题做三次以上,书籍教材看三 ...

  10. OC initialize和init

    Objective-C很有趣的一个地方是,它非常非常像C.实际上,它就是C语言加上一些其他扩展和一个运行时间(runtime). 有了这个在每个Objective-C程序中都会起作用的附加运行时间,给 ...