使用新的createbitmap方法时如何设置QR码的纠错级别

时间:2012-07-18 15:54:52

标签: blackberry qr-code zxing

此问题参考了API文档链接http://www.blackberry.com/developers/docs/7.0.0api/net/rim/device/api/barcodelib/BarcodeBitmap.html

他们指定旧方法

public static Bitmap createBitmap(ByteMatrix byteMatrix,
                                  int maxBitmapSizeInPixels) 

已弃用。

但是通过使用新方法,

public static Bitmap createBitmap(ByteMatrix byteMatrix)

他们没有指定一种方法来指定Multiformatwriter中QR码的纠错级别。通过各种成员函数,我无法找到方法。 有人试过吗?

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

这是我的代码,我已经通过手机查看,根据我的手机正确设置了纠错级别。

        Hashtable hints = new Hashtable();
        switch (comboBox1.Text)
        {
            case "L":
                hints.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
                break;
            case "Q":
                hints.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.Q);
                break;
            case "H":
                hints.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
                break;
            default: 
                hints.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
                break;
        }
        MultiFormatWriter mw = new MultiFormatWriter();
        ByteMatrix bm = mw.encode(data, BarcodeFormat.QR_CODE, size, size, hints);
        Bitmap img = bm.ToBitmap();
        pictureBox1.Image = img;

答案 1 :(得分:1)

只是查看了文档。

它表示将createBitmap(ByteMatrix byteMatrix)MultiFormatWriter结合使用。这有方法encode(String contents, BarcodeFormat format, int width, int height, Hashtable hints),您可以在其中指定宽度,高度和错误级别。

指定置于带有值EncodeHintType.ERROR_CORRECTION的提示哈希表键new Integer(level)的错误级别。

不幸的是,我没有找到here描述的这些值的任何常量。但也许你可以在削减资源中找到它。

答案 2 :(得分:1)

编码时,您可以传递提示

Map<EncodeHintType, Object> hints = new Hastable<EncodeHintType, Object>();

将错误更正设置添加到提示中(例如,添加到级别M)

hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);

ZXing默认使用错误修正等级L(最低,即使在最多7%的伤害后QR码仍然可读)