如何在二维码中间添加图片
How to add an image in the center of a QR code
我正在尝试生成类似于 WhatsAppWeb 中使用的 QR 码,它的中心有一个 徽标。
我正在使用 'androidmads.library.qrgenearator:QRGenearator:1.0.3' 库,我正在使用下面的代码生成二维码。
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");
}
}
});
如何在二维码中添加图片?
您是否尝试过使用 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;
}
我正在尝试生成类似于 WhatsAppWeb 中使用的 QR 码,它的中心有一个 徽标。
我正在使用 'androidmads.library.qrgenearator:QRGenearator:1.0.3' 库,我正在使用下面的代码生成二维码。
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");
}
}
});
如何在二维码中添加图片?
您是否尝试过使用 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;
}