Android 带logo的二维码详解及实例
程序员文章站
2023-12-12 16:52:52
android 带logo的二维码详解及实例
好久没有写博客了,快元旦了公司的事情也不是很多,刚好和朋友一起出去玩玩,朋友是搞php的说到了每天在公司都是搞些什么二维码和...
android 带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(); } } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!