iOS 7核心图像二维码生成过于模糊。

26

这是我生成QRCode图像的代码:

+ (UIImage *)generateQRCodeWithString:(NSString *)string {
    NSData *stringData = [string dataUsingEncoding:NSUTF8StringEncoding];
    CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
    [filter setValue:stringData forKey:@"inputMessage"];
    [filter setValue:@"M" forKey:@"inputCorrectionLevel"];
    return [UIImage imageWithCIImage:filter.outputImage];
}

结果太模糊了,能否设置生成的二维码尺寸?


你的UIImageView的contentMode是什么? - maelswarm
缩放以填充。但不确定是否相关。UIImage本身模糊。 - OMGPOP
不要使用缩放填充 - 尝试使用等比例适应或等比例填充。 - maelswarm
@Roecrew无法工作。我认为问题在于UIImage本身的大小。 - OMGPOP
11个回答

0

也许你应该试试这个。这里有一个Swift教程。

+ (UIImage *)generateQRCodeImageBySize:(CGFloat)size andString:(NSString *)string {

    CIImage *qrCodeImage = [[CIImage alloc] init];

    NSData *stringData = [string dataUsingEncoding:NSISOLatin1StringEncoding allowLossyConversion:NO];

    CIFilter *ciFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"];

    [ciFilter setValue:stringData forKey:@"inputMessage"];
    [ciFilter setValue:@"Q" forKey:@"inputCorrectionLevel"];

    qrCodeImage = ciFilter.outputImage;

    CGFloat scaleX = size / qrCodeImage.extent.size.width;
    CGFloat scaleY = size / qrCodeImage.extent.size.height;
    CIImage *transformedQRImage = [qrCodeImage imageByApplyingTransform:CGAffineTransformMakeScale(scaleX, scaleY)];

    return [UIImage imageWithCIImage:transformedQRImage];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接