QRimageResultType QRimage_writeImage( QRcode *qrcode, const char *outfile, QRimageType imagetype ) { if (!qrcode) { return QR_IMG_QRCODE_IS_NULL; } switch(imagetype) { case QR_IMG_PNG: return writePNG(qrcode, outfile); case QR_IMG_EPS: return writeEPS(qrcode, outfile); case QR_IMG_SVG: return writeSVG(qrcode, outfile); case QR_IMG_ANSI: return writeANSI(qrcode, outfile, 0); case QR_IMG_ANSI256: return writeANSI(qrcode, outfile, 1); case QR_IMG_ASCIIi: return writeASCII(qrcode, outfile, 1); case QR_IMG_ASCII: return writeASCII(qrcode, outfile, 0); case QR_IMG_UTF8: return writeUTF8(qrcode, outfile, 0); case QR_IMG_ANSIUTF8: return writeUTF8(qrcode, outfile, 1); default: return QR_IMG_UNKNOW_IMAGE_TYPE; } return QR_IMG_SUCCESS; }
static void qrencode(const unsigned char *intext, int length, const char *outfile) { QRcode *qrcode; qrcode = encode(intext, length); if(qrcode == NULL) { perror("Failed to encode the input data"); exit(EXIT_FAILURE); } if(verbose) { fprintf(stderr, "File: %s, Version: %d\n", (outfile!=NULL)?outfile:"(stdout)", qrcode->version); } switch(image_type) { case PNG_TYPE: writePNG(qrcode, outfile); break; case EPS_TYPE: writeEPS(qrcode, outfile); break; case SVG_TYPE: writeSVG(qrcode, outfile); break; case ANSI_TYPE: case ANSI256_TYPE: writeANSI(qrcode, outfile); break; case ASCIIi_TYPE: writeASCII(qrcode, outfile, 1); break; case ASCII_TYPE: writeASCII(qrcode, outfile, 0); break; case UTF8_TYPE: writeUTF8(qrcode, outfile, 0); break; case ANSIUTF8_TYPE: writeUTF8(qrcode, outfile, 1); break; default: fprintf(stderr, "Unknown image type.\n"); exit(EXIT_FAILURE); } QRcode_free(qrcode); }
static void qrencodeStructured(const unsigned char *intext, int length, const char *outfile) { QRcode_List *qrlist, *p; char filename[FILENAME_MAX]; char *base, *q, *suffix = NULL; const char *type_suffix; int i = 1; size_t suffix_size; switch(image_type) { case PNG_TYPE: type_suffix = ".png"; break; case EPS_TYPE: type_suffix = ".eps"; break; case SVG_TYPE: type_suffix = ".svg"; break; case ANSI_TYPE: case ANSI256_TYPE: case ASCII_TYPE: case UTF8_TYPE: case ANSIUTF8_TYPE: type_suffix = ".txt"; break; default: fprintf(stderr, "Unknown image type.\n"); exit(EXIT_FAILURE); } if(outfile == NULL) { fprintf(stderr, "An output filename must be specified to store the structured images.\n"); exit(EXIT_FAILURE); } base = strdup(outfile); if(base == NULL) { fprintf(stderr, "Failed to allocate memory.\n"); exit(EXIT_FAILURE); } suffix_size = strlen(type_suffix); if(strlen(base) > suffix_size) { q = base + strlen(base) - suffix_size; if(strcasecmp(type_suffix, q) == 0) { suffix = strdup(q); *q = '\0'; } } qrlist = encodeStructured(intext, length); if(qrlist == NULL) { perror("Failed to encode the input data"); exit(EXIT_FAILURE); } for(p = qrlist; p != NULL; p = p->next) { if(p->code == NULL) { fprintf(stderr, "Failed to encode the input data.\n"); exit(EXIT_FAILURE); } if(suffix) { snprintf(filename, FILENAME_MAX, "%s-%02d%s", base, i, suffix); } else { snprintf(filename, FILENAME_MAX, "%s-%02d", base, i); } if(verbose) { fprintf(stderr, "File: %s, Version: %d\n", filename, p->code->version); } switch(image_type) { case PNG_TYPE: writePNG(p->code, filename); break; case EPS_TYPE: writeEPS(p->code, filename); break; case SVG_TYPE: writeSVG(p->code, filename); break; case ANSI_TYPE: case ANSI256_TYPE: writeANSI(p->code, filename); break; case ASCIIi_TYPE: writeASCII(p->code, filename, 1); break; case ASCII_TYPE: writeASCII(p->code, filename, 0); break; case UTF8_TYPE: writeUTF8(p->code, filename, 0); break; case ANSIUTF8_TYPE: writeUTF8(p->code, filename, 0); break; default: fprintf(stderr, "Unknown image type.\n"); exit(EXIT_FAILURE); } i++; } free(base); if(suffix) { free(suffix); } QRcode_List_free(qrlist); }