android 生成二维码
来源:互联网 发布:佛教网软件 编辑:程序博客网 时间:2024/05/17 22:08
首先要有zxing包 http://download.csdn.net/detail/greehand_/9495295
布局就放一个ImagView 用于显示二维码
<ImageView android:id="@+id/imgs" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
主代码
public class MainActivity extends Activity {private int QR_HEIGHT = 300;private int QR_WIDTH = 300;ImageView imgs; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 1800/30=60*4=240 imgs=(ImageView) findViewById(R.id.imgs); createImage("http://www.dianping.com/shop/5924161");//扫描二维码后所进去的页面 } /** * 产生二维码图片 方法名:createImage * * @param text */private void createImage(String text) {try {// 需要引入core包QRCodeWriter writer = new QRCodeWriter();if (text == null || "".equals(text) || text.length() < 1) {return;}// 把输入的文本转为二维码BitMatrix martix = writer.encode(text, BarcodeFormat.QR_CODE,QR_WIDTH, QR_HEIGHT);System.out.println("w:" + martix.getWidth() + "h:"+ martix.getHeight());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 (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 bitmap = Bitmap.createBitmap(QR_WIDTH, QR_HEIGHT,Bitmap.Config.ARGB_8888);bitmap.setPixels(pixels, 0, QR_WIDTH, 0, 0, QR_WIDTH, QR_HEIGHT);// 自定义个性化二维码 中间放图标或者用户图像// 1-缩放用户图像大小50*50二维码中间的自定义图像区 不能太大 ,个人亲测超过50扫描会有障碍。Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher);Bitmap icon2 = scaleBitmap(icon, 50, 50);// 二维码中间的自定义图像区 不能太大// ,个人亲测超过50扫描会有障碍。// 2-将用户图像画在二维码中间, 千万别覆盖四个角的扫描线Bitmap finalBitmap = mergeBitmap(bitmap, icon2);// 设置给view展示imgs.setImageBitmap(finalBitmap);// 及时回收不要的图片if (icon != null & !icon.isRecycled()) {//删icon2.recycle();icon.recycle();bitmap.recycle();//置nullicon2=null;icon=null;//通知回收System.gc();}} catch (WriterException e) {e.printStackTrace();}}/** * 按照固定长宽 缩放图片 方法名:scaleBitmap * * @param 需要缩放的图片 * @param newWidth * 缩放后的宽度 * @param newHeight * 缩放后的长度 * @return 新的图片 */public Bitmap scaleBitmap(Bitmap bm, int newWidth, int newHeight) {// 获得图片的宽高int width = bm.getWidth();int height = bm.getHeight();// 计算缩放比例float scaleWidth = ((float) newWidth) / width;float scaleHeight = ((float) newHeight) / height;// 取得想要缩放的matrix参数Matrix matrix = new Matrix();matrix.postScale(scaleWidth, scaleHeight);// 得到新的缩放后的图片Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix,true);return newbm;}/** * 合并2张图 方法名:mergeBitmap * * @param src * 背景图 * @param icon * 需要画在中间的icon * @return 合成后的图片 */public Bitmap mergeBitmap(Bitmap src, Bitmap icon) {if (src == null) {return null;}int w = src.getWidth();int h = src.getHeight();int ww = icon.getWidth();int wh = icon.getHeight();// create the new blank bitmapBitmap newb = Bitmap.createBitmap(w, h, Config.ARGB_8888);Canvas cv = new Canvas(newb);cv.drawBitmap(src, 0, 0, null);cv.drawBitmap(icon, (w - ww) / 2, (h - wh) / 2, null);cv.save(Canvas.ALL_SAVE_FLAG);cv.restore();return newb;}}
0 0
- android 生成二维码图片
- android 生成二维码
- android二维码条形码生成
- android 二维码生成
- android 二维码生成
- android 生成二维码/一维码
- Android生成二维码图片
- Android二维码扫描、生成
- Android生成二维码
- Android生成二维码
- Android 二维码生成
- android 解析、生成二维码
- android 生成二维码
- Android二维码生成功能
- Android二维码生成
- Android zxing生成二维码
- android 二维码生成操作
- android 二维码生成
- 231. Power of Two
- 快速稀疏编码算法
- rollback写在messagebox
- JAVA 笔记 (总)
- abstract class和interface有什么区别?
- android 生成二维码
- MySQL5.6 PERFORMANCE_SCHEMA 说明
- ubuntu fastdfs ./make.sh install 执行报错
- jsp的include两种使用方法
- vim的.vimrc配置文件中如果有文件路径存在空格的解决方法
- Linux隐藏多个进程
- 李开复:算法的力量
- Python函数
- Verilog延时:specify的用法(转)