Создать изображение QRCode на экране Android

"Я хочу вывести изображение на экран". После сканирования QR-кода мне нужно показать это как изображение в моем приложении, как это сделать.


Я пробовал это, но не получаю вывод

   BarcodeFormat barcodeFormat = BarcodeFormat.QR_CODE;
        int width0 = 500;
        int height0 = 500;

        int colorBack = 0xFF000000;
        int colorFront = 0xFFFFFFFF;

        QRCodeWriter writer = new QRCodeWriter();
        try
        {
            Hashtable<EncodeHintType, Object> hint = new Hashtable<EncodeHintType,Object>(2);
            hint.put(EncodeHintType.CHARACTER_SET, "UTF-8");
            ByteMatrix bitMatrix = writer.encode(fName, barcodeFormat, width0, height0, hint);
            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++)
                {

                   // if (bitMatrix.get(x, y))
                        pixels[offset + x] = colorBack;
                    //else
                        //pixels[offset + x] = colorFront;
                }
            }

            Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
            bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
            ImageView imageview = (ImageView)findViewById(R.id.imageView1);
            imageview.setImageBitmap(bitmap);
        } catch (WriterException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

1 ответ

Расшифровать qrcode:

Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");  
startActivityForResult(intent, REQUEST_BARCODE);
Toast toast = Toast.makeText(this, "Start scanning QR code", Toast.LENGTH_SHORT);
toast.show();



и затем закодируйте его, чтобы получить изображение в outputtream:

public void generateQRCode(int width, int height, String content, OutputStream outputStream) throws Exception { 
    String imageFormat = IMAGE_FORMAT; 
    BitMatrix bitMatrix = new QRCodeWriter().encode(content, BarcodeFormat.QR_CODE,width, height);
    MatrixToImageWriter.writeToStream(bitMatrix, imageFormat, outputStream);     
}


ИЛИ ЖЕ

byte[] b = {0x48, 0x45, 0x4C, 0x4C, 0x4F};
//convert the byte array into a ISO-8859-1 string
String data;
try {
    data = new String(b, "ISO-8859-1");
}
catch (UnsupportedEncodingException e) {
 //the program shouldn't be able to get here
 return;
}

//get a byte matrix for the data
ByteMatrix matrix;
com.google.zxing.Writer writer = new QRCodeWriter();
try {
 matrix = writer.encode(data, com.google.zxing.BarcodeFormat.QR_CODE, width, height);
}
catch (com.google.zxing.WriterException e) {
 //exit the method
 return;
}

//generate an image from the byte matrix
int width = matrix.getWidth(); 
int height = matrix.getHeight(); 

byte[][] array = matrix.getArray();

//create buffered image to draw to
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

//iterate through the matrix and draw the pixels to the image
for (int y = 0; y < height; y++) { 
 for (int x = 0; x < width; x++) { 
  int grayValue = array[y][x] & 0xff; 
  image.setRGB(x, y, (grayValue == 0 ? 0 : 0xFFFFFF));
 }
}

//write the image to the output stream
ImageIO.write(image, "png", outputStream);



Редактировать: см. Пост "Захват изображения с камеры и отображение в действии".

Другие вопросы по тегам