编码的QR和Aztec条形码包含模糊/抖动

时间:2017-04-27 08:05:47

标签: ios uiimageview uiimage zxing zxingobjc

我正在使用ZXingObjC库的最新版本(3.2.1)在iOS应用程序中生成QR和Aztec条形码。我正在使用与库的“编码”示例相同的代码,即:

NSError *error = nil;
ZXMultiFormatWriter *writer = [ZXMultiFormatWriter writer];
ZXBitMatrix* result = [writer encode:@"A string to encode"
                              format:kBarcodeFormatQRCode
                               width:200
                              height:200
                               error:&error];

CGImageRef imageRef = [[ZXImage imageWithMatrix:result] cgimage];
UIImage *image = [UIImage imageWithCGImage:imageRef];
myImageView.image = image;

但是,我发现使用上述代码在UIImageView中呈现的条形码在从黑色块转换为白色块时会包含一些模糊/抖动。这是不合需要的,并且可能在扫描速度最优先的环境中影响扫描速度。以下是放大条形码以使问题更加明显的示例:

iOS barcode screenshot zoomed in

问题:在我的iOS应用程序中生成/渲染条形码时,我还能做些什么来避免这种模糊/抖动?

请注意,我已将UIImageView的内容模式指定为中心(UIViewContentModeCenter),以便它不会缩放所包含的图像,因此我无法想象{{1}导致模糊/抖动。

暂且不说:我在Android应用程序中使用等效的UIImageView库,而我在那里看到同样的问题。请参阅Android应用程序中放大下面条形码的屏幕截图:

Android barcode screenshot zoomed in

1 个答案:

答案 0 :(得分:0)

在其他几个设备(iPhone 5s和iPhone 7)上测试后,我意识到这是iPhone 6+特有的问题。事实证明,"物理" iPhone 6+的分辨率(1080 x 1920像素)小于"虚拟"分辨率(1242 x 2208像素)(见here)因此iPhone 6+对显示器进行了一些下采样,这就是造成模糊/抖动的原因。可悲的是,我不认为有什么可以做的...除非有人有任何建议吗?