From 51d7007fd4bcaaa771d43a745cb6728d4e6d29ae Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期五, 05 一月 2024 18:04:41 +0800 Subject: [PATCH] 2024年01月05日18:04:39 --- app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java | 76 ++++++++++++++++++++++++++++++++++++++ 1 files changed, 76 insertions(+), 0 deletions(-) diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java index 008944e..00b8645 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java @@ -1,11 +1,24 @@ package com.hdl.photovoltaic.other; +import android.graphics.Bitmap; +import android.text.TextUtils; + +import com.dcloud.zxing2.WriterException; +import com.google.gson.Gson; +import com.google.zxing.BarcodeFormat; +import com.google.zxing.EncodeHintType; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.qrcode.QRCodeWriter; + +import java.util.Hashtable; + /** * 鍏叡閫昏緫 */ public class HdlCommonLogic { private static volatile HdlCommonLogic sHdlCommonLogic; + /** * 鑾峰彇褰撳墠瀵硅薄 @@ -25,4 +38,67 @@ } + /** + * 鐢熸垚浜岀淮鐮� + * + * @param content 瀛楃涓插唴瀹� + * @param width 浜岀淮鐮佸搴� + * @param height 浜岀淮鐮侀珮搴� + * @param character_set 缂栫爜鏂瑰紡锛堜竴鑸娇鐢║TF-8锛� + * @param error_correction_level 瀹归敊鐜� L锛�7% M锛�15% Q锛�25% H锛�35% + * @param margin 绌虹櫧杈硅窛锛堜簩缁寸爜涓庤竟妗嗙殑绌虹櫧鍖哄煙锛� + * @param color_black 榛戣壊鑹插潡 + * @param color_white 鐧借壊鑹插潡 + * @return BitMap + */ + public Bitmap createQRCodeBitmap(String content, int width, int height, String character_set, String error_correction_level, String margin, int color_black, int color_white) { + // 瀛楃涓插唴瀹瑰垽绌� + if (TextUtils.isEmpty(content)) { + return null; + } + // 瀹藉拰楂�>=0 + if (width < 0 || height < 0) { + return null; + } + try { + /** 1.璁剧疆浜岀淮鐮佺浉鍏抽厤缃� */ + Hashtable<EncodeHintType, String> hints = new Hashtable<>(); + // 瀛楃杞爜鏍煎紡璁剧疆 + if (!TextUtils.isEmpty(character_set)) { + hints.put(EncodeHintType.CHARACTER_SET, character_set); + } + // 瀹归敊鐜囪缃� + if (!TextUtils.isEmpty(error_correction_level)) { + hints.put(EncodeHintType.ERROR_CORRECTION, error_correction_level); + } + // 绌虹櫧杈硅窛璁剧疆 + if (!TextUtils.isEmpty(margin)) { + hints.put(EncodeHintType.MARGIN, margin); + } + /** 2.灏嗛厤缃弬鏁颁紶鍏ュ埌QRCodeWriter鐨別ncode鏂规硶鐢熸垚BitMatrix(浣嶇煩闃�)瀵硅薄 */ + BitMatrix bitMatrix = new QRCodeWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints); + + /** 3.鍒涘缓鍍忕礌鏁扮粍,骞舵牴鎹瓸itMatrix(浣嶇煩闃�)瀵硅薄涓烘暟缁勫厓绱犺祴棰滆壊鍊� */ + int[] pixels = new int[width * height]; + for (int y = 0; y < height; y++) { + for (int x = 0; x < width; x++) { + //bitMatrix.get(x,y)鏂规硶杩斿洖true鏄粦鑹茶壊鍧楋紝false鏄櫧鑹茶壊鍧� + if (bitMatrix.get(x, y)) { + pixels[y * width + x] = color_black;//榛戣壊鑹插潡鍍忕礌璁剧疆 + } else { + pixels[y * width + x] = color_white;// 鐧借壊鑹插潡鍍忕礌璁剧疆 + } + } + } + /** 4.鍒涘缓Bitmap瀵硅薄,鏍规嵁鍍忕礌鏁扮粍璁剧疆Bitmap姣忎釜鍍忕礌鐐圭殑棰滆壊鍊�,骞惰繑鍥濨itmap瀵硅薄 */ + Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + bitmap.setPixels(pixels, 0, width, 0, 0, width, height); + return bitmap; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + } -- Gitblit v1.8.0