Создать PNG-изображение из QRCode для iPhone - PullRequest
6 голосов
/ 22 мая 2011

Я использую zxing для декодирования QRCodes.У меня также теперь есть работающий кодер, и я могу создать QRCode, который содержит закодированные данные.

Я спрашиваю, знает ли кто-нибудь, как преобразовать эти данные QRCOde в изображение PNG.

Ответы [ 5 ]

3 голосов
/ 22 мая 2011

Если ваше приложение имеет онлайн-доступ, вы можете использовать что-то вроде http://www.tag.cx/qr-codes/

Многие пользователи ищут способ кодировать QR-коды и другие коды программно на iPhone. Эти функции еще не были перенесены с Android на iPhone, как описано в этой ветке Zxing: https://groups.google.com/group/zxing/browse_thread/thread/7325ed13cc49122c/aba6f4545c5c3583?lnk=gst&q=encode+to+png+iphone#aba6f4545c5c3583

Пожалуйста, посмотрите этот вопрос для дальнейшего обсуждения: Создание двумерного штрих-кода (например, QR-кода, матрицы данных, PDF417) на iPhone и Android

Вы можете использовать Phonegap для кодирования штрих-кода QR с помощью плагина здесь . Следуйте инструкциям, и вы должны быть успешными.

Javascript прост, взят прямо из https://github.com/phonegap/phonegap-plugins/

   window.plugins.barcodeScanner.encode(BarcodeScanner.Encode.TEXT_TYPE, "http://www.nytimes.com", function(success) {
    alert("encode success: " + success);
  }, function(fail) {
    alert("encoding failed: " + fail);
  }, {yesString: "Install"}
);
0 голосов
/ 29 апреля 2016

Отредактировано Есть похожие вопросы этого поста, я связался с этим ответом.

Я использовал этот простой код для кодирования QRCode в одном из моих проектов. Вы можете использовать:

//
//  QRCodeGeneratorViewController.h
//  
//
//  Created by Jhoney Lopes on 28/09/14.
//  Copyright (c) 2014 Jhoney Lopes. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface QRCodeGeneratorViewController : UIViewController

@end

Реализация .m

//
//  QRCodeGeneratorViewController.m
// 
//
//  Created by Jhoney Lopes on 28/09/14.
//  Copyright (c) 2014 Jhoney Lopes. All rights reserved.
//

#import "QRCodeGeneratorViewController.h"

@interface QRCodeGeneratorViewController ()
@property (strong, nonatomic) IBOutlet UIImageView *qrImageView;
@end

@implementation QRCodeGeneratorViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    [self generateTheQRCodeImageFromDataBaseInfo:@"TEXT-WHAT-YOU-WANT-TO-CONVERT-IN-QRCODE"];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - QR Code Generator

- (CIImage *)createQRForString:(NSString *)qrString
{
    // Need to convert the string to a UTF-8 encoded NSData object
    NSData *stringData = [qrString dataUsingEncoding:NSUTF8StringEncoding];

    // Create the filter
    CIFilter *qrFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
    // Set the message content and error-correction level
    [qrFilter setValue:stringData forKey:@"inputMessage"];
    [qrFilter setValue:@"H" forKey:@"inputCorrectionLevel"];

    // Send the image back
    return qrFilter.outputImage;
}

- (UIImage *)createNonInterpolatedUIImageFromCIImage:(CIImage *)image withScale:(CGFloat)scale
{
    // Render the CIImage into a CGImage
    CGImageRef cgImage = [[CIContext contextWithOptions:nil] createCGImage:image fromRect:image.extent];

    // Now we'll rescale using CoreGraphics
    UIGraphicsBeginImageContext(CGSizeMake(image.extent.size.width * scale, image.extent.size.width * scale));
    CGContextRef context = UIGraphicsGetCurrentContext();
    // We don't want to interpolate (since we've got a pixel-correct image)
    CGContextSetInterpolationQuality(context, kCGInterpolationNone);
    CGContextDrawImage(context, CGContextGetClipBoundingBox(context), cgImage);
    // Get the image out
    UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
    // Tidy up
    UIGraphicsEndImageContext();
    CGImageRelease(cgImage);
    return scaledImage;
}

- (void)generateTheQRCodeImageFromDataBaseInfo:(NSString *)jsonString {

    // Get the string
    NSString *stringToEncode = jsonString;

    // Generate the image
    CIImage *qrCode = [self createQRForString:stringToEncode];

    // Convert to an UIImage
    UIImage *qrCodeImg = [self createNonInterpolatedUIImageFromCIImage:qrCode withScale:2*[[UIScreen mainScreen] scale]];

    // And push the image on to the screen
    self.qrImageView.image = qrCodeImg;
}
0 голосов
/ 24 сентября 2013

Загрузите образец кода для Генератора QR-кода с по этой ссылке Github, это проще и проще.Добавьте файлы ресурсов, которые использовались в этом примере проекта, в ваш проект.

Если вы хотите просто показать QR-код, сгенерированный в UIImageview, вы можете напрямую использовать код в примере проекта

или

Если вам нужен файл png с QR-кодом, это означает, что вы можете получить NSData из изображения UIImageview, преобразовать файл NSData в png и использовать его.

0 голосов
/ 20 декабря 2011

Если вы используете телефонный разрыв и нуждаетесь в автономной поддержке, возможно, jquery qrcode может помочь.

0 голосов
/ 30 мая 2011

Кодировщик psytec (http://groups.google.com/group/zxing/msg/27e421daeb510d0f) работает хорошо. Я использую его в работе. Должно быть относительно легко использовать что-то вроде libpng для перехода от битового массива к png. На устройствах я перебираю битовый массивон производит и рисует прямо в контексты компьютерной графики.

...