3

这个问题参考了 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 码的纠错级别。我也找不到办法,查看各种成员函数。有没有人试过这个?

谢谢你的帮助。

4

3 回答 3

4

这是我的代码,我用手机检查过,纠错级别根据我的手机正确设置。

        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;
于 2012-08-15T11:46:59.210 回答
1

刚看了文档。

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

要指定错误级别,请EncodeHintType.ERROR_CORRECTION使用 value提示 hashtable 键new Integer(level)

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

于 2012-07-18T16:21:59.200 回答
1

编码的时候可以传入hints

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

将纠错设置添加到提示中(例如添加到 M 级)

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

ZXing 默认使用 L 级纠错(最低,意味着 QR 码即使在最大 7% 损坏后仍可读取)

于 2015-04-03T18:01:17.230 回答