এখানে একটি বিটম্যাপ উত্পন্ন করার জন্য আমার সহজ এবং কার্যকারী ফাংশন! আমি কেবল জেডএক্সিং ১.৩.জার ব্যবহার করি! আমিও সংশোধন স্তর উচ্চে সেট করেছি!
PS: x এবং y বিপরীত হয়, এটি স্বাভাবিক, কারণ বিটম্যাট্রিক্স বিপরীত এক্স এবং y। এই কোডটি বর্গাকার চিত্রের সাথে পুরোপুরি কাজ করে।
public static Bitmap generateQrCode(String myCodeText) throws WriterException {
Hashtable<EncodeHintType, ErrorCorrectionLevel> hintMap = new Hashtable<EncodeHintType, ErrorCorrectionLevel>();
hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
QRCodeWriter qrCodeWriter = new QRCodeWriter();
int size = 256;
ByteMatrix bitMatrix = qrCodeWriter.encode(myCodeText,BarcodeFormat.QR_CODE, size, size, hintMap);
int width = bitMatrix.width();
Bitmap bmp = Bitmap.createBitmap(width, width, Bitmap.Config.RGB_565);
for (int x = 0; x < width; x++) {
for (int y = 0; y < width; y++) {
bmp.setPixel(y, x, bitMatrix.get(x, y)==0 ? Color.BLACK : Color.WHITE);
}
}
return bmp;
}
সম্পাদনা
একের পর এক বিটম্যাপ.সেটপিক্সেলের পরিবর্তে পিক্সেল ইন অ্যারে সহ বিটম্যাপ.সেটপিক্সেলস (...) ব্যবহার করা দ্রুত:
BitMatrix bitMatrix = writer.encode(inputValue, BarcodeFormat.QR_CODE, size, size);
int width = bitMatrix.getWidth();
int height = bitMatrix.getHeight();
int[] pixels = new int[width * height];
for (int y = 0; y < height; y++) {
int offset = y * width;
for (int x = 0; x < width; x++) {
pixels[offset + x] = bitMatrix.get(x, y) ? BLACK : WHITE;
}
}
bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixels, 0, width, 0, 0, width, height);