在Android屏幕中生成QRCode图像

时间:2014-09-04 10:26:56

标签: android qr-code

“我想在屏幕上显示图像。” 在扫描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 个答案:

答案 0 :(得分: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();



然后对其进行编码以获取输出流中的图像:

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);



修改:请参阅post以获取&#34;从相机中捕获图像并在活动中显示&#34;。