gpt4 book ai didi

ios - WatchKit:图像未显示

转载 作者:可可西里 更新时间:2023-11-01 05:52:42 25 4
gpt4 key购买 nike

代码如下:

@interface InterfaceController()
@property (nonatomic, weak) IBOutlet WKInterfaceImage *qrImage;
@property (nonatomic, weak) IBOutlet WKInterfaceLabel *label;
@end

@implementation InterfaceController
- (void)awakeWithContext:(id)context {
[super awakeWithContext:context];
[self.label setText: @"Welcome"];
UIImage *image = [InterfaceController generateQRCodeWithString:@"Welcome"];
[self.qrImage setImage:image];
}

- (void)willActivate {
[super willActivate];
}

- (void)didDeactivate {
[super didDeactivate];
}

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

CIImage *input = filter.outputImage;
CGAffineTransform transform = CGAffineTransformMakeScale(10.0f, 10.0f);
CIImage *output = [input imageByApplyingTransform: transform];

return [UIImage imageWithCIImage:output];
}
@end

我正在尝试从某些特定文本生成二维码并将其显示在 watch 界面中。问题是 generateQRCodeWithString: 生成的 UIImage永远不会显示。但是,如果我使用 [UIImage imageNamed:@"XXX.png"] 加载图像从 WatchKit 扩展包中,它显示正确。

我不确定发生了什么。我错过了什么?提前致谢。


更新:作为对 msk 的回应,是的,我很确定。我试着对图像进行 NSLog,它给出了 <UIImage: 0x7fc261d276e0>, {230, 230}

最佳答案

generateQRCodeWithString: 返回的图像不是“真实”图像(简而言之)并且没有完全渲染出来。将 CIImage 视为图像应该是什么样子的概念,而不是实际像素。

generateQRCodeWithString: 中的 return 行替换为如下内容:

CGImageRef cgOutput = [[CIContext contextWithOptions:nil]
createCGImage:output fromRect:output.extent];
return [UIImage imageWithCGImage:cgOutput];

这会将 QR 码渲染到 CGImage 以将其转换为像素,然后再渲染到 UIImage

创建 CIContext 的成本相对较高,如果您要生成大量 QR 码,则上下文应该是静态的或类似的并初始化一次。但对于一次性的,应该没问题。

关于ios - WatchKit:图像未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28848718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com