2011-05-22 21 views
6

He estado usando zxing para decodificar QRCodes. También ahora tengo el codificador funcionando y puedo crear el QRCode que contiene los datos codificados.Crear imagen png desde QRCode para iPhone

Pregunto si alguien sabe cómo convertir estos datos QRCOde a una imagen png.

Respuesta

3

Si su aplicación tiene acceso en línea a continuación, puede utilizar algo como http://www.tag.cx/qr-codes/

Muchos usuarios están buscando una manera de codificar los códigos QR y otros códigos de programación en el iPhone. Estas características no han sido portados desde Android a iPhone sin embargo, como se describe en este hilo ZXing: https://groups.google.com/group/zxing/browse_thread/thread/7325ed13cc49122c/aba6f4545c5c3583?lnk=gst&q=encode+to+png+iphone#aba6f4545c5c3583

Por favor, vea esta pregunta para continuar el debate: Generate 2D bar code (e.g. QR Code, Data Matrix, PDF417) on iPhone and Android

Puede utilizar Phonegap para codificar un código de barras QR usando el plugin here . Sigue las instrucciones y deberías tener éxito.

El Javascript es simple, tomada directamente desde 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

que necesito para generar la imagen sin conexión. –

+0

Se editó la respuesta para incluir el complemento Phonegap que permite la codificación de códigos qr mediante programación. –

0

El codificador psytec (http://groups.google.com/group/zxing/msg/27e421daeb510d0f) funciona bien. Lo uso en producción. Debería ser relativamente starightforward utilizar algo como libpng para ir de la matriz de bits que produce a un png. En los dispositivos, voy a través de la matriz de bits que produce y dibuja directamente en contextos CG.

+0

podría publicar su código y/o enlaces a los archivos necesarios para hacer esto? Encontré todos los archivos c/cpp pero no puedo compilar ni obtener nada. – binnyb

+0

Un esqueleto del código Objective C++ que uso en iOS está en https://gist.github.com/1005365. Quizás eso ayude. Pero me temo que no tengo instrucciones para introducirlo en Xcode.Está profundamente incrustado en mi proyecto, tan difícil de extraer solo piezas. – smparkes

0

Si está utilizando el teléfono y necesita soporte fuera de línea, tal vez jquery qrcode podría ayudar.

0

Descargue el código de muestra para Generador de códigos QR de this Enlace de Github, es más simple y fácil. Agregue los archivos de recursos que se usaron en ese proyecto de muestra a su proyecto.

Si desea sólo para mostrar el código QR generado en un UIImageview, se puede utilizar directamente el código en el proyecto de ejemplo

o

Si necesita el archivo PNG con el código QR que significa puede obtener el NSData de la imagen del UIImageview y convertir el NSData al archivo png y usarlo.

0

Editado Hay preguntas similares de esta publicación, he vinculado a esta respuesta.

Utilicé este código simple para codificar un código QR en uno de mis proyectos. Se puede utilizar:

// 
// 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 Implementación

// 
// 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; 
} 
Cuestiones relacionadas