结合图像和文本进行打印
Combine Image and Text to print them
我想创建一个 .png 来打印它。该文件应具有此布局 (100x35mm)
我使用 Zxing 项目创建了 QrCode。
public Bitmap createQrCode(String stringForQrCode){
com.google.zxing. MultiFormatWriter writer =new MultiFormatWriter();
String data = stringForQrCode;
String finaldata = Uri.encode(data, "utf-8");
BitMatrix bm = null;
try {
bm = writer.encode(finaldata, BarcodeFormat.QR_CODE,185, 185);
} catch (WriterException e) {
e.printStackTrace();
}
Bitmap ImageBitmap = Bitmap.createBitmap(185, 185, Bitmap.Config.ARGB_8888);
for (int i = 0; i < 185; i++) {//width
for (int j = 0; j < 185; j++) {//height
assert bm != null;
ImageBitmap.setPixel(i, j, bm.get(i, j) ? Color.BLACK: Color.WHITE);
}
}
return ImageBitmap;
}
但是我怎样才能将这些图像与我的两个字符串结合起来。我必须创建一个新的位图吗?以及我如何选择不同项目的位置。
首先创建图像和文本父视图的位图
public static Bitmap loadBitmapFromView(View v) {
Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
v.draw(c);
return b;
}
现在将此位图转换为您想要的任何格式
我通过从所需视图创建位图解决了这个问题。因此,我创建了一个包含我的二维码和两个字符串的视图。但是我没有显示视图,而是将其设置为 invisible
并使用以下代码创建和保存位图。
public static Bitmap getBitmapFromView(View view, int width, int height) {
Bitmap returnedBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(returnedBitmap);
Drawable bgDrawable =view.getBackground();
if (bgDrawable!=null) {
bgDrawable.draw(canvas);
} else {
canvas.drawColor(Color.WHITE);
}
view.draw(canvas);
return returnedBitmap;
}
我想创建一个 .png 来打印它。该文件应具有此布局 (100x35mm)
我使用 Zxing 项目创建了 QrCode。
public Bitmap createQrCode(String stringForQrCode){
com.google.zxing. MultiFormatWriter writer =new MultiFormatWriter();
String data = stringForQrCode;
String finaldata = Uri.encode(data, "utf-8");
BitMatrix bm = null;
try {
bm = writer.encode(finaldata, BarcodeFormat.QR_CODE,185, 185);
} catch (WriterException e) {
e.printStackTrace();
}
Bitmap ImageBitmap = Bitmap.createBitmap(185, 185, Bitmap.Config.ARGB_8888);
for (int i = 0; i < 185; i++) {//width
for (int j = 0; j < 185; j++) {//height
assert bm != null;
ImageBitmap.setPixel(i, j, bm.get(i, j) ? Color.BLACK: Color.WHITE);
}
}
return ImageBitmap;
}
但是我怎样才能将这些图像与我的两个字符串结合起来。我必须创建一个新的位图吗?以及我如何选择不同项目的位置。
首先创建图像和文本父视图的位图
public static Bitmap loadBitmapFromView(View v) {
Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
v.draw(c);
return b;
}
现在将此位图转换为您想要的任何格式
我通过从所需视图创建位图解决了这个问题。因此,我创建了一个包含我的二维码和两个字符串的视图。但是我没有显示视图,而是将其设置为 invisible
并使用以下代码创建和保存位图。
public static Bitmap getBitmapFromView(View view, int width, int height) {
Bitmap returnedBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(returnedBitmap);
Drawable bgDrawable =view.getBackground();
if (bgDrawable!=null) {
bgDrawable.draw(canvas);
} else {
canvas.drawColor(Color.WHITE);
}
view.draw(canvas);
return returnedBitmap;
}