为了账号安全,请及时绑定邮箱和手机立即绑定

如何在QR码中心添加图像

如何在QR码中心添加图像

吃鸡游戏 2022-09-01 17:39:25
我正在尝试生成一个类似于WhatsAppWeb中使用的QR码,其中心有一个徽标。我正在使用'androidmads.library.qrgenearator:QRGenearator:1.0.3'库,我正在使用下面的代码来生成QR码。 start.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View view) {            inputValue = edtValue.getText().toString().trim();            if (inputValue.length() > 0) {                WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE);                Display display = manager.getDefaultDisplay();                Point point = new Point();                display.getSize(point);                int width = point.x;                int height = point.y;                int smallerDimension = width < height ? width : height;                smallerDimension = smallerDimension * 3 / 4;                qrgEncoder = new QRGEncoder(                        inputValue, null,                        QRGContents.Type.TEXT,                        smallerDimension);                try {                    bitmap = qrgEncoder.encodeAsBitmap();                    qrImage.setImageBitmap(bitmap);                } catch (WriterException e) {                    Log.v(TAG, e.toString());                }            } else {                edtValue.setError("Required");            }        }    });如何将图像添加到二维码?
查看完整描述

1 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

你有没有试过使用ZXing,它是一个非常酷的QR码库之类的东西,这是我不久前的做法:


//generate and set QR code

    ImageView imgQRCode = (ImageView) findViewById(R.id.imgQRCode);

    try {

        Bitmap qr = encodeAsBitmap("Any String HERE");


        if(qr != null)

            imgQRCode.setImageBitmap(qr);

        else {

            //Do whatever based on your logic

            //Toast.makeText(Prompt_ViewQRActivity.this, "Error message", Toast.LENGTH_LONG).show();

            //finish();

        }

    } catch (Exception e) {


    }

然后是“encodeAsBitmap”方法


Bitmap encodeAsBitmap(String str) throws WriterException {

    BitMatrix result;


    try {

        result = new MultiFormatWriter().encode(str, BarcodeFormat.QR_CODE, 300, 300, null);

    } catch (IllegalArgumentException iae) {

        // Unsupported format

        return null;

    }


    int w = result.getWidth();

    int h = result.getHeight();


    int[] pixels = new int[w * h];


    for (int y = 0; y < h; y++) {

        int offset = y * w;


        for (int x = 0; x < w; x++) {

            pixels[offset + x] = result.get(x, y) ? Color.BLACK : Color.WHITE;

        }

    }


    Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);

    bitmap.setPixels(pixels, 0, 300, 0, 0, w, h);


    return bitmap;

}


查看完整回答
反对 回复 2022-09-01
  • 1 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号