mirror of
https://github.com/MacPass/MacPass.git
synced 2025-12-13 08:52:20 +00:00
Added API to create QR Code images.
This commit is contained in:
@@ -14,6 +14,9 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@property (nonatomic, readonly, copy) NSString *QRCodeString;
|
||||
|
||||
+ (instancetype)QRCodeImageWithString:(NSString *)string;
|
||||
- (instancetype)initWithCIImage:(CIImage *)ciImage;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
- (NSString *)QRCodeString {
|
||||
NSRect rect = NSMakeRect(0, 0, self.size.width, self.size.height);
|
||||
id imageRep = [self bestRepresentationForRect:rect context:nil hints:nil];
|
||||
if([imageRep isKindOfClass:NSBitmapImageRep.class]) {
|
||||
if(![imageRep isKindOfClass:NSBitmapImageRep.class]) {
|
||||
return @"";
|
||||
}
|
||||
NSBitmapImageRep *bitmapRep = (NSBitmapImageRep *)imageRep;
|
||||
@@ -30,4 +30,27 @@
|
||||
return @"";
|
||||
}
|
||||
|
||||
|
||||
+ (instancetype)QRCodeImageWithString:(NSString *)string {
|
||||
NSData *asciiData = [string dataUsingEncoding:NSISOLatin1StringEncoding];
|
||||
if(!asciiData) {
|
||||
return nil;
|
||||
}
|
||||
CIFilter *qrCodeFilter = [CIFilter filterWithName:@"CIQRCodeGenerator" withInputParameters:@{@"inputMessage": asciiData}];
|
||||
NSAffineTransform *scale = [[NSAffineTransform alloc] init];
|
||||
[scale scaleBy:5];
|
||||
|
||||
CIFilter *scaleFilter = [CIFilter filterWithName:@"CIAffineTransform" withInputParameters:@{@"inputImage": qrCodeFilter.outputImage, @"inputTransform": scale}];
|
||||
return [[NSImage alloc] initWithCIImage:scaleFilter.outputImage];
|
||||
}
|
||||
|
||||
- (instancetype)initWithCIImage:(CIImage *)ciImage {
|
||||
NSCIImageRep *imageRep = [NSCIImageRep imageRepWithCIImage:ciImage];
|
||||
self = [self initWithSize:[imageRep size]];
|
||||
if(self) {
|
||||
[self addRepresentation:imageRep];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user