我需要从与PrinterHelper一起使用的Android设备上打印QR码。当我打印位图时,它的打印方式变大了。 我需要在活动中的ImageView中打印需要打印的QR码。
如何将生成的QR码打印在宽度和高度为4厘米而不是15厘米的纸上,而Android会自动将其打印为15厘米。
我尝试将比例模式设置为SCALE_MODE_FIT
我尝试创建缩放的位图
这行不通。
Bitmap temp = ((BitmapDrawable)image.getDrawable()).getBitmap();
Bitmap toPrint = Bitmap.createScaledBitmap(temp, 200, 200, false);
PrintHelper printer = new PrintHelper(MainActivity.this);
printer.setScaleMode(PrintHelper.SCALE_MODE_FIT);
printer.printBitmap("print test", toPrint);
答案 0 :(得分:0)
这是我的实现方式,代码在科特林中。
1。生成条形码位图(使用Zxing库)
import android.graphics.Bitmap
import android.os.Build
import android.support.annotation.RequiresApi
import com.google.zxing.BarcodeFormat
import com.google.zxing.MultiFormatWriter
import com.journeyapps.barcodescanner.BarcodeEncoder
object BarcodeUtil {
@RequiresApi(Build.VERSION_CODES.KITKAT)
fun generateBarcodeBitmap(barcodeData: String): Bitmap? {
lateinit var multiFormatWriter: MultiFormatWriter
return try {
multiFormatWriter = MultiFormatWriter()
val bitMatrix = multiFormatWriter.encode(barcodeData, BarcodeFormat.CODE_128, 4000, 800)
val barcodeEncoder = BarcodeEncoder()
val imgBitmap = barcodeEncoder.createBitmap(bitMatrix)
imgBitmap
} catch (e: Throwable) {
e.stackTrace
e.cause
e.message
null
}
}
}
我生成了条形码Bitmap
,最后最后从try
块返回了条形码。
2。将位图加载到ImageView
val barCode = mView.findViewById(R.id.img_barcode) as ImageView
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Glide.with(activity)
.load(BarcodeUtil.generateBarcodeBitmap(edtBarcode.text.toString()))
.into(barCode)
}
我使用Glide
库在Barcode Bitmap
上设置了ImageView
。
Glide
是图像加载库。从here
要记住的一件事是,不建议下载一个仅用于实现一项功能的全新库。