From 8c7a14996556e81d32390f1fb95c660c265b163a Mon Sep 17 00:00:00 2001 From: hooper114 Date: Mon, 2 Mar 2009 08:52:57 +0000 Subject: [PATCH] Add Appendix D --- docs/3dprinciple.png | Bin 0 -> 22554 bytes docs/3dsample.png | Bin 0 -> 8481 bytes docs/appxc.html | 9 ++- docs/appxd.html | 170 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 177 insertions(+), 2 deletions(-) create mode 100755 docs/3dprinciple.png create mode 100755 docs/3dsample.png create mode 100755 docs/appxd.html diff --git a/docs/3dprinciple.png b/docs/3dprinciple.png new file mode 100755 index 0000000000000000000000000000000000000000..ad8a2c648e4943d34bc76d22f0a319ec0e3a4847 GIT binary patch literal 22554 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 B6`%kB literal 0 HcmV?d00001 diff --git a/docs/3dsample.png b/docs/3dsample.png new file mode 100755 index 0000000000000000000000000000000000000000..169c5e6f545008dfb4a36647c980fc87a4f68140 GIT binary patch literal 8481 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

+

Next

@@ -364,7 +365,9 @@ Free Documentation License.

Home

- + +

Next

+ @@ -373,7 +376,9 @@ Free Documentation License.

 

- + +

Appendix D

+



diff --git a/docs/appxd.html b/docs/appxd.html new file mode 100755 index 00000000..13967ce8 --- /dev/null +++ b/docs/appxd.html @@ -0,0 +1,170 @@ + + + + + Making colourful barcodes + + + + + + + + + + + +
+

Zint Barcode Generator

+
+

Prev

+
+
+

Appendix D: Making colourful barcodes

+

An obvious next step in the development of barcodes is to use +colour instead of boring old black and white to encode data. This +technique is not currently used by any barcode encoding standards in +the wild but an indication of how it might be achieved can be gained +with a little data processing and the Zint library.

+

This example takes an input string and splits it into +three roughly equal length strings each of which is encoded and then +combined to make a colour version of the symbol. This can then be +decoded by applying red, green and blue filters to the resulting +image and then decoding them using the same algorithm used to decode +normal black and white symbols as shown below.

+

+

One advantage of this system is that finder patterns in the symbol +show up clearly as black-on-white and so can be found using the +methods already established for standard 2D barcodes. This can be +clearly seen in the examples below.

+

+

Another advantage of this system is that it fits three times as +much data into a symbol of a given size. Disadvantages are likely to +become apparent when trying to decode these symbols in real-world +applications: decoding will require larger processor overheads and +more sophisticated algorithms. Telling white from yellow may be a +particular problem.

+

The code below performs the encoding as done on the images above +and outputs an array of elements as characters representing colours. +Putting this together as an image requires additional code.

+
#include <stdio.h>
+#include <zint.h>
+#include <string.h>
+
+int main(int argc, char **argv)
+{
+	struct zint_symbol *red_symbol;
+	struct zint_symbol *green_symbol;
+	struct zint_symbol *blue_symbol;
+	struct zint_symbol *colour_symbol;
+
+	int error = 0;
+	int i, j;
+	int input_len = strlen(argv[1]);
+	int snippet = input_len / 3;
+	char full_string[input_len + 5];
+	char red_string[(input_len / 3) + 2];
+	char green_string[(input_len / 3) + 2];
+	char blue_string[(input_len / 3) + 2];
+	int symbol_type = BARCODE_QRCODE;
+
+	if(input_len % 3 != 0) { snippet++; }
+	strcpy(full_string, argv[1]);
+
+	for(i = 0; i < snippet; i++) {
+		red_string[i] = full_string[i];
+		green_string[i] = full_string[i + snippet];
+		blue_string[i] = full_string[i + snippet + snippet];
+	}
+	red_string[i] = '\0';
+	green_string[i] = '\0';
+	blue_string[i] = '\0';
+
+	red_symbol = ZBarcode_Create();
+	green_symbol = ZBarcode_Create();
+	blue_symbol = ZBarcode_Create();
+	colour_symbol = ZBarcode_Create();
+
+	red_symbol->symbology = symbol_type;
+	green_symbol->symbology = symbol_type;
+	blue_symbol->symbology = symbol_type;
+	colour_symbol->symbology = symbol_type;
+
+	error = ZBarcode_Encode(red_symbol, (unsigned char *)red_string);
+	error += ZBarcode_Encode(green_symbol, (unsigned char *)green_string);
+	error += ZBarcode_Encode(blue_symbol, (unsigned char *)blue_string);
+
+	if(error != 0) {
+		printf("Some error occurred!\n");
+		ZBarcode_Delete(red_symbol);
+		ZBarcode_Delete(green_symbol);
+		ZBarcode_Delete(blue_symbol);
+		ZBarcode_Delete(colour_symbol);
+		return 1;
+	}
+
+	colour_symbol->width = red_symbol->width;
+	if(green_symbol->width > colour_symbol->width) { colour_symbol->width = green_symbol->width; }
+	if(blue_symbol->width > colour_symbol->width) { colour_symbol->width = blue_symbol->width; }
+
+	colour_symbol->rows = red_symbol->rows;
+	if(green_symbol->rows > colour_symbol->rows) { colour_symbol->rows = green_symbol->rows; }
+	if(blue_symbol->rows > colour_symbol->rows) { colour_symbol->rows = blue_symbol->rows; }
+
+	for(i = 0; i < colour_symbol->rows; i++) {
+		colour_symbol->row_height[i] = 1;
+		for(j = 0; j < colour_symbol->width; j++) {
+			int colourval;
+
+			colourval = 0;
+
+			if(red_symbol->encoded_data[i][j] == '1') { colourval += 4; }
+			if(green_symbol->encoded_data[i][j] == '1') { colourval += 2; }
+			if(blue_symbol->encoded_data[i][j] == '1') { colourval += 1; }
+
+			switch(colourval) {
+				case 0: colour_symbol->encoded_data[i][j] = '0'; break; /* white */
+				case 1: colour_symbol->encoded_data[i][j] = 'Y'; break; /* yellow */
+				case 2: colour_symbol->encoded_data[i][j] = 'M'; break; /* magenta */
+				case 3: colour_symbol->encoded_data[i][j] = 'R'; break; /* red */
+				case 4: colour_symbol->encoded_data[i][j] = 'C'; break; /* cyan */
+				case 5: colour_symbol->encoded_data[i][j] = 'G'; break; /* green */
+				case 6: colour_symbol->encoded_data[i][j] = 'B'; break; /* blue */
+				case 7: colour_symbol->encoded_data[i][j] = '1'; break; /* black */
+			}
+			printf("%c",colour_symbol->encoded_data[i][j]);
+		}
+		printf("\n");
+	}
+
+	ZBarcode_Delete(red_symbol);
+	ZBarcode_Delete(green_symbol);
+	ZBarcode_Delete(blue_symbol);
+	ZBarcode_Delete(colour_symbol);
+	return 0;
+}

+


+ + + + + + + + + + + +
+

Prev

+
+

Home

+
+
+

Appendix C

+
+

 

+
+
+ + \ No newline at end of file