Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <getopt.h>
- #include <string.h>
- #include <time.h>
- #include <dirent.h>
- #include <sys/stat.h>
- #include <sys/types.h>
- //
- // LEADTOOLS Includes
- //
- #include "l_bitmap.h"
- #include "ltbar.h"
- //
- // Application Options
- //
- struct option long_options[] =
- {
- {"file", required_argument, 0, 'f' },
- {"write", optional_argument, 0, 'w' }
- };
- static void print_usage()
- {
- printf("Usage: barcode -f filename [-w barcodedata]\nNote: use barcodedata to write EAN-13 barcode\n");
- }
- static void ReadBarcodes(pBITMAPHANDLE bitmap);
- static void WriteBarcode(const char *filename, const char *data, L_UINT32 barcodeType);
- int main(int argc, char *argv[])
- {
- int opt;
- int optIndex = 0;
- char *filename = "";
- int ret = SUCCESS;
- int write = 0;
- char *data = NULL;
- UNLOCKSUPPORT();
- ISEVALEXPIRED(ret);
- if(ret)
- {
- printf("\nEvaluation expired. Application will exit.\n");
- return EXIT_FAILURE;
- }
- /*
- while((opt = getopt_long(argc,argv,"f:w:",long_options,&optIndex))!=-1)
- {
- switch(opt)
- {
- case 'f':
- filename = optarg;
- break;
- case 'w':
- write = 1;
- data = optarg;
- break;
- }
- }
- if(strlen(filename)==0)
- {
- print_usage();
- exit(EXIT_FAILURE);
- }
- */
- struct dirent *dp;
- DIR *dfd;
- char *dir ;
- dir = argv[1] ;
- if ( argc == 1 )
- {
- printf("Usage: %s dirname\n",argv[0]);
- return 0;
- }
- if ((dfd = opendir(dir)) == NULL)
- {
- fprintf(stderr, "Can't open %s\n", dir);
- return 0;
- }
- char filename_qfd[100] ;
- while ((dp = readdir(dfd)) != NULL)
- {
- struct stat stbuf ;
- sprintf( filename_qfd , "%s/%s",dir,dp->d_name) ;
- if( stat(filename_qfd,&stbuf ) == -1 )
- {
- printf("Unable to stat file: %s\n",filename_qfd) ;
- continue ;
- }
- if ( ( stbuf.st_mode & S_IFMT ) == S_IFDIR )
- {
- continue;
- // Skip directories
- }
- printf("%s\n", filename_qfd);
- clock_t start = clock(), diff;
- if(!write)
- {
- //
- // Load Barcode Image
- //
- BITMAPHANDLE bitmap = { 0 };
- memset(&bitmap,0,sizeof(BITMAPHANDLE));
- ret = L_LoadFile(filename_qfd,&bitmap,sizeof(BITMAPHANDLE),0,ORDER_BGR, LOADFILE_ALLOCATE | LOADFILE_STORE, NULL,NULL,NULL,NULL);
- if(ret!=SUCCESS)
- {
- printf("\nError loading %s: %d\n", filename_qfd, ret);
- exit(EXIT_FAILURE);
- }
- ReadBarcodes(&bitmap);
- L_FreeBitmap(&bitmap);
- }
- else
- {
- if(strlen(data)==0)
- {
- print_usage();
- exit(EXIT_FAILURE);
- }
- WriteBarcode(filename_qfd, data, BARCODE_1D_EAN_13);
- }
- diff = clock() - start;
- int msec = diff * 1000 / CLOCKS_PER_SEC;
- printf("Time taken %d seconds %d milliseconds\n", msec/1000, msec%1000);
- }
- return EXIT_SUCCESS;
- }
- static void GetBarTypeStr(L_UINT32 barType, L_TCHAR * barStr)
- {
- switch (barType)
- {
- case BARCODE_1D_EAN_13: sprintf(barStr, TEXT("EAN 13")); break;
- case BARCODE_1D_EAN_8: sprintf(barStr, TEXT("EAN 8")); break;
- case BARCODE_1D_UPC_A: sprintf(barStr, TEXT("UPC A")); break;
- case BARCODE_1D_UPC_E: sprintf(barStr, TEXT("UPC E")); break;
- case BARCODE_1D_CODE_3_OF_9: sprintf(barStr, TEXT("Code 3 of 9")); break;
- case BARCODE_1D_CODE_128: sprintf(barStr, TEXT("Code 128")); break;
- case BARCODE_1D_CODE_I2_OF_5: sprintf(barStr, TEXT("Interleaved 2 of 5")); break;
- case BARCODE_1D_CODA_BAR: sprintf(barStr, TEXT("CODABAR")); break;
- case BARCODE_1D_UCCEAN_128: sprintf(barStr, TEXT("UCCEAN 128")); break;
- case BARCODE_1D_CODE_93: sprintf(barStr, TEXT("Code 93")); break;
- case BARCODE_1D_EANEXT_5: sprintf(barStr, TEXT("EAN EXT5")); break;
- case BARCODE_1D_EANEXT_2: sprintf(barStr, TEXT("EAN EXT2")); break;
- case BARCODE_1D_MSI: sprintf(barStr, TEXT("MSI")); break;
- case BARCODE_1D_CODE11: sprintf(barStr, TEXT("Code11")); break;
- case BARCODE_1D_CODE_S25: sprintf(barStr, TEXT("Standard 2 of 5")); break;
- case BARCODE_1D_RSS14: sprintf(barStr, TEXT("RSS 14")); break;
- case BARCODE_1D_RSS14_LIMITED: sprintf(barStr, TEXT("RSS 14 Limited")); break;
- case BARCODE_1D_RSS14_EXPANDED: sprintf(barStr, TEXT("RSS 14 Expanded")); break;
- case BARCODE_1D_RSS14_STACKED: sprintf(barStr, TEXT("RSS 14 Stacked")); break;
- case BARCODE_1D_RSS14_EXP_STACKED: sprintf(barStr, TEXT("RSS 14 Expanded Stacked")); break;
- case BARCODE_1D_PATCH_CODE: sprintf(barStr, TEXT("Patch Code")); break;
- case BARCODE_1D_POST_NET: sprintf(barStr, TEXT("Postnet")); break;
- case BARCODE_1D_PLANET: sprintf(barStr, TEXT("Planet")); break;
- case BARCODE_1D_AUST_POST: sprintf(barStr, TEXT("Aust. Post")); break;
- case BARCODE_1D_RM4SCC: sprintf(barStr, TEXT("RM4SCC")); break;
- case BARCODE_1D_USPS4BC: sprintf(barStr, TEXT("USPS-4CB")); break;
- case BARCODE_PDF417: sprintf(barStr, TEXT("PDF417")); break;
- case BARCODE_MICRO_PDF417: sprintf(barStr, TEXT("MicroPDF417")); break;
- case BARCODE_DM_DEF: sprintf(barStr, TEXT("DM Default")); break;
- case BARCODE_DM_10x10: sprintf(barStr, TEXT("DM 10x10")); break;
- case BARCODE_DM_12x12: sprintf(barStr, TEXT("DM 12x12")); break;
- case BARCODE_DM_14x14: sprintf(barStr, TEXT("DM 14x14")); break;
- case BARCODE_DM_16x16: sprintf(barStr, TEXT("DM 16x16")); break;
- case BARCODE_DM_18x18: sprintf(barStr, TEXT("DM 18x18")); break;
- case BARCODE_DM_20x20: sprintf(barStr, TEXT("DM 20x20")); break;
- case BARCODE_DM_22x22: sprintf(barStr, TEXT("DM 22x22")); break;
- case BARCODE_DM_24x24: sprintf(barStr, TEXT("DM 24x24")); break;
- case BARCODE_DM_26x26: sprintf(barStr, TEXT("DM 26x26")); break;
- case BARCODE_DM_32x32: sprintf(barStr, TEXT("DM 32x32")); break;
- case BARCODE_DM_36x36: sprintf(barStr, TEXT("DM 36x36")); break;
- case BARCODE_DM_40x40: sprintf(barStr, TEXT("DM 40x40")); break;
- case BARCODE_DM_44x44: sprintf(barStr, TEXT("DM 44x44")); break;
- case BARCODE_DM_48x48: sprintf(barStr, TEXT("DM 48x48")); break;
- case BARCODE_DM_52x52: sprintf(barStr, TEXT("DM 52x52")); break;
- case BARCODE_DM_64x64: sprintf(barStr, TEXT("DM 64x64")); break;
- case BARCODE_DM_72x72: sprintf(barStr, TEXT("DM 72x72")); break;
- case BARCODE_DM_80x80: sprintf(barStr, TEXT("DM 80x80")); break;
- case BARCODE_DM_88x88: sprintf(barStr, TEXT("DM 88x88")); break;
- case BARCODE_DM_96x96: sprintf(barStr, TEXT("DM 96x96")); break;
- case BARCODE_DM_104x104: sprintf(barStr, TEXT("DM 10x104")); break;
- case BARCODE_DM_120x120: sprintf(barStr, TEXT("DM 120x120")); break;
- case BARCODE_DM_132x132: sprintf(barStr, TEXT("DM 132x132")); break;
- case BARCODE_DM_144x144: sprintf(barStr, TEXT("DM 144x144")); break;
- case BARCODE_DM_8x18: sprintf(barStr, TEXT("DM 8x18")); break;
- case BARCODE_DM_8x32: sprintf(barStr, TEXT("DM 8x32")); break;
- case BARCODE_DM_12x26: sprintf(barStr, TEXT("DM 12x26")); break;
- case BARCODE_DM_12x36: sprintf(barStr, TEXT("DM 12x36")); break;
- case BARCODE_DM_16x36: sprintf(barStr, TEXT("DM 16x36")); break;
- case BARCODE_DM_16x48: sprintf(barStr, TEXT("DM 48x48")); break;
- case BARCODE_DM_WRITE_RECTANGLE: sprintf(barStr, TEXT("DM Default Rect")); break;
- case BARCODE_QR_DEF: sprintf(barStr, TEXT("QR DEF")); break;
- case BARCODE_QR_M2_1: sprintf(barStr, TEXT("QR M2 1")); break;
- case BARCODE_QR_M2_2: sprintf(barStr, TEXT("QR M2 2")); break;
- case BARCODE_QR_M2_3: sprintf(barStr, TEXT("QR M2 3")); break;
- case BARCODE_QR_M2_4: sprintf(barStr, TEXT("QR M2 4")); break;
- case BARCODE_QR_M2_5: sprintf(barStr, TEXT("QR M2 5")); break;
- case BARCODE_QR_M2_6: sprintf(barStr, TEXT("QR M2 6")); break;
- case BARCODE_QR_M2_7: sprintf(barStr, TEXT("QR M2 7")); break;
- case BARCODE_QR_M2_8: sprintf(barStr, TEXT("QR M2 8")); break;
- case BARCODE_QR_M2_9: sprintf(barStr, TEXT("QR M2 9")); break;
- case BARCODE_QR_M2_10: sprintf(barStr, TEXT("QR M2 10")); break;
- case BARCODE_QR_M2_11: sprintf(barStr, TEXT("QR M2 11")); break;
- case BARCODE_QR_M2_12: sprintf(barStr, TEXT("QR M2 12")); break;
- case BARCODE_QR_M2_13: sprintf(barStr, TEXT("QR M2 13")); break;
- case BARCODE_QR_M2_14: sprintf(barStr, TEXT("QR M2 14")); break;
- case BARCODE_QR_M2_15: sprintf(barStr, TEXT("QR M2 15")); break;
- case BARCODE_QR_M2_16: sprintf(barStr, TEXT("QR M2 16")); break;
- case BARCODE_QR_M2_17: sprintf(barStr, TEXT("QR M2 17")); break;
- case BARCODE_QR_M2_18: sprintf(barStr, TEXT("QR M2 18")); break;
- case BARCODE_QR_M2_19: sprintf(barStr, TEXT("QR M2 19")); break;
- case BARCODE_QR_M2_20: sprintf(barStr, TEXT("QR M2 20")); break;
- case BARCODE_QR_M2_21: sprintf(barStr, TEXT("QR M2 21")); break;
- case BARCODE_QR_M2_22: sprintf(barStr, TEXT("QR M2 22")); break;
- case BARCODE_QR_M2_23: sprintf(barStr, TEXT("QR M2 23")); break;
- case BARCODE_QR_M2_24: sprintf(barStr, TEXT("QR M2 24")); break;
- case BARCODE_QR_M2_25: sprintf(barStr, TEXT("QR M2 25")); break;
- case BARCODE_QR_M2_26: sprintf(barStr, TEXT("QR M2 26")); break;
- case BARCODE_QR_M2_27: sprintf(barStr, TEXT("QR M2 27")); break;
- case BARCODE_QR_M2_28: sprintf(barStr, TEXT("QR M2 28")); break;
- case BARCODE_QR_M2_29: sprintf(barStr, TEXT("QR M2 29")); break;
- case BARCODE_QR_M2_30: sprintf(barStr, TEXT("QR M2 30")); break;
- case BARCODE_QR_M2_31: sprintf(barStr, TEXT("QR M2 31")); break;
- case BARCODE_QR_M2_32: sprintf(barStr, TEXT("QR M2 32")); break;
- case BARCODE_QR_M2_33: sprintf(barStr, TEXT("QR M2 33")); break;
- case BARCODE_QR_M2_34: sprintf(barStr, TEXT("QR M2 34")); break;
- case BARCODE_QR_M2_35: sprintf(barStr, TEXT("QR M2 35")); break;
- case BARCODE_QR_M2_36: sprintf(barStr, TEXT("QR M2 36")); break;
- case BARCODE_QR_M2_37: sprintf(barStr, TEXT("QR M2 37")); break;
- case BARCODE_QR_M2_38: sprintf(barStr, TEXT("QR M2 38")); break;
- case BARCODE_QR_M2_39: sprintf(barStr, TEXT("QR M2 39")); break;
- case BARCODE_QR_M2_40: sprintf(barStr, TEXT("QR M2 40")); break;
- case BARCODE_QR_M1_1: sprintf(barStr, TEXT("QR M1 1")); break;
- case BARCODE_QR_M1_2: sprintf(barStr, TEXT("QR M1 2")); break;
- case BARCODE_QR_M1_3: sprintf(barStr, TEXT("QR M1 3")); break;
- case BARCODE_QR_M1_4: sprintf(barStr, TEXT("QR M1 4")); break;
- case BARCODE_QR_M1_5: sprintf(barStr, TEXT("QR M1 5")); break;
- case BARCODE_QR_M1_6: sprintf(barStr, TEXT("QR M1 6")); break;
- case BARCODE_QR_M1_7: sprintf(barStr, TEXT("QR M1 7")); break;
- case BARCODE_QR_M1_8: sprintf(barStr, TEXT("QR M1 8")); break;
- case BARCODE_QR_M1_9: sprintf(barStr, TEXT("QR M1 9")); break;
- case BARCODE_QR_M1_10: sprintf(barStr, TEXT("QR M1 10")); break;
- case BARCODE_QR_M1_11: sprintf(barStr, TEXT("QR M1 11")); break;
- case BARCODE_QR_M1_12: sprintf(barStr, TEXT("QR M1 12")); break;
- case BARCODE_QR_M1_13: sprintf(barStr, TEXT("QR M1 13")); break;
- case BARCODE_QR_M1_14: sprintf(barStr, TEXT("QR M1 14")); break;
- #if defined(LEADTOOLS_V19_OR_LATER)
- case BARCODE_AZTEC_CODE: sprintf(barStr, TEXT("AZTEC CODE")); break;
- case BARCODE_AZTEC_CODE_Compact1: sprintf(barStr, TEXT("AZTEC CODE Compact1")); break;
- case BARCODE_AZTEC_CODE_Compact2: sprintf(barStr, TEXT("AZTEC CODE Compact2")); break;
- case BARCODE_AZTEC_CODE_Compact3: sprintf(barStr, TEXT("AZTEC CODE Compact3")); break;
- case BARCODE_AZTEC_CODE_Compact4: sprintf(barStr, TEXT("AZTEC CODE Compact4")); break;
- case BARCODE_AZTEC_CODE_Full1: sprintf(barStr, TEXT("AZTEC CODE Full1")); break;
- case BARCODE_AZTEC_CODE_Full2: sprintf(barStr, TEXT("AZTEC CODE Full2")); break;
- case BARCODE_AZTEC_CODE_Full3: sprintf(barStr, TEXT("AZTEC CODE Full3")); break;
- case BARCODE_AZTEC_CODE_Full4: sprintf(barStr, TEXT("AZTEC CODE Full4")); break;
- case BARCODE_AZTEC_CODE_Full5: sprintf(barStr, TEXT("AZTEC CODE Full5")); break;
- case BARCODE_AZTEC_CODE_Full6: sprintf(barStr, TEXT("AZTEC CODE Full6")); break;
- case BARCODE_AZTEC_CODE_Full7: sprintf(barStr, TEXT("AZTEC CODE Full7")); break;
- case BARCODE_AZTEC_CODE_Full8: sprintf(barStr, TEXT("AZTEC CODE Full8")); break;
- case BARCODE_AZTEC_CODE_Full9: sprintf(barStr, TEXT("AZTEC CODE Full9")); break;
- case BARCODE_AZTEC_CODE_Full10: sprintf(barStr, TEXT("AZTEC CODE Full10")); break;
- case BARCODE_AZTEC_CODE_Full11: sprintf(barStr, TEXT("AZTEC CODE Full11")); break;
- case BARCODE_AZTEC_CODE_Full12: sprintf(barStr, TEXT("AZTEC CODE Full12")); break;
- case BARCODE_AZTEC_CODE_Full13: sprintf(barStr, TEXT("AZTEC CODE Full13")); break;
- case BARCODE_AZTEC_CODE_Full14: sprintf(barStr, TEXT("AZTEC CODE Full14")); break;
- case BARCODE_AZTEC_CODE_Full15: sprintf(barStr, TEXT("AZTEC CODE Full15")); break;
- case BARCODE_AZTEC_CODE_Full16: sprintf(barStr, TEXT("AZTEC CODE Full16")); break;
- case BARCODE_AZTEC_CODE_Full17: sprintf(barStr, TEXT("AZTEC CODE Full17")); break;
- case BARCODE_AZTEC_CODE_Full18: sprintf(barStr, TEXT("AZTEC CODE Full18")); break;
- case BARCODE_AZTEC_CODE_Full19: sprintf(barStr, TEXT("AZTEC CODE Full19")); break;
- case BARCODE_AZTEC_CODE_Full20: sprintf(barStr, TEXT("AZTEC CODE Full20")); break;
- case BARCODE_AZTEC_CODE_Full21: sprintf(barStr, TEXT("AZTEC CODE Full21")); break;
- case BARCODE_AZTEC_CODE_Full22: sprintf(barStr, TEXT("AZTEC CODE Full22")); break;
- case BARCODE_AZTEC_CODE_Full23: sprintf(barStr, TEXT("AZTEC CODE Full23")); break;
- case BARCODE_AZTEC_CODE_Full24: sprintf(barStr, TEXT("AZTEC CODE Full24")); break;
- case BARCODE_AZTEC_CODE_Full25: sprintf(barStr, TEXT("AZTEC CODE Full25")); break;
- case BARCODE_AZTEC_CODE_Full26: sprintf(barStr, TEXT("AZTEC CODE Full26")); break;
- case BARCODE_AZTEC_CODE_Full27: sprintf(barStr, TEXT("AZTEC CODE Full27")); break;
- case BARCODE_AZTEC_CODE_Full28: sprintf(barStr, TEXT("AZTEC CODE Full28")); break;
- case BARCODE_AZTEC_CODE_Full29: sprintf(barStr, TEXT("AZTEC CODE Full29")); break;
- case BARCODE_AZTEC_CODE_Full30: sprintf(barStr, TEXT("AZTEC CODE Full30")); break;
- case BARCODE_AZTEC_CODE_Full31: sprintf(barStr, TEXT("AZTEC CODE Full31")); break;
- case BARCODE_AZTEC_CODE_Full32: sprintf(barStr, TEXT("AZTEC CODE Full32")); break;
- case BARCODE_MAXI_CODE: sprintf(barStr, TEXT("MAXI CODE")); break;
- case BARCODE_MAXI_CODE_MODE_2: sprintf(barStr, TEXT("MAXI CODE MODE 2")); break;
- case BARCODE_MAXI_CODE_MODE_3: sprintf(barStr, TEXT("MAXI CODE MODE 3")); break;
- case BARCODE_MAXI_CODE_MODE_4: sprintf(barStr, TEXT("MAXI CODE MODE 4")); break;
- case BARCODE_MAXI_CODE_MODE_5: sprintf(barStr, TEXT("MAXI CODE MODE 5")); break;
- case BARCODE_MICRO_QR_CODE: sprintf(barStr, TEXT("MICRO QR CODE")); break;
- case BARCODE_MICRO_QR_CODE_M1: sprintf(barStr, TEXT("MICRO QR CODE M1")); break;
- case BARCODE_MICRO_QR_CODE_M2_L: sprintf(barStr, TEXT("MICRO QR CODE M2 L")); break;
- case BARCODE_MICRO_QR_CODE_M2_M: sprintf(barStr, TEXT("MICRO QR CODE M2 M")); break;
- case BARCODE_MICRO_QR_CODE_M3_L: sprintf(barStr, TEXT("MICRO QR CODE M3 L")); break;
- case BARCODE_MICRO_QR_CODE_M3_M: sprintf(barStr, TEXT("MICRO QR CODE M3 M")); break;
- case BARCODE_MICRO_QR_CODE_M4_L: sprintf(barStr, TEXT("MICRO QR CODE M4 L")); break;
- case BARCODE_MICRO_QR_CODE_M4_M: sprintf(barStr, TEXT("MICRO QR CODE M4 M")); break;
- case BARCODE_MICRO_QR_CODE_M4_Q: sprintf(barStr, TEXT("MICRO QR CODE M4 Q")); break;
- #endif // #if defined(LEADTOOLS_V19_OR_LATER)
- case BARCODE_QR_M1_DEF: sprintf(barStr, TEXT("QR M1 DEF")); break;
- }
- }
- static void Read(pBITMAPHANDLE bitmap, L_UINT32 type, char *description)
- {
- int ret = SUCCESS;
- pBARCODEDATA barcodes = NULL;
- BARCODE1D barcode_1d_settings = {
- sizeof(BARCODE1D),
- 0,
- (BARCODE_DIR_SKEW | BARCODE_DIR_HORIZONTAL | BARCODE_DIR_VERTICAL | BARCODE_DIR_DIAGONAL),
- 0,
- 9,
- 10,
- 15,
- 2,
- BARCODE_1D_NORMAL,
- 0,
- 10
- };
- pBARCODE1D barcode_1d_settings_ptr = &barcode_1d_settings;
- /*
- barcode_1d_settings->uStructSize = sizeof(pBARCODEDATA);
- barcode_1d_settings->bOutShowText = 0; // for writing only
- barcode_1d_settings->nDirection = BARCODE_DIR_SKEW | BARCODE_DIR_HORIZONTAL | BARCODE_DIR_VERTICAL | BARCODE_DIR_DIAGONAL; // for reading only
- barcode_1d_settings->bErrorCheck = 0;
- barcode_1d_settings->nGranularity = 9;
- barcode_1d_settings->nMinLength = 10;
- barcode_1d_settings->nMaxLength = 15;
- barcode_1d_settings->nWhiteLines = 2;
- barcode_1d_settings->uStd1DFlags = BARCODE_1D_NORMAL;
- barcode_1d_settings->uAdvancedFlags = 0;
- barcode_1d_settings->nXModule = 10;
- */
- ret = L_BarCodeRead(
- bitmap,
- NULL,
- type,
- BARCODE_SCANLINES_PER_PIXELS,
- 0,
- 0,
- barcode_1d_settings_ptr,
- NULL,
- NULL,
- &barcodes,
- sizeof(BARCODEDATA));
- if(ret == SUCCESS)
- {
- int count = barcodes->nTotalCount;
- int i = 0;
- printf("\nTotal %s barcode symbols found is: %d", description, count);
- for(i=0;i<count;i++)
- {
- char type[40];
- GetBarTypeStr(barcodes[i].ulType, type);
- printf("\nBarcode # %d [%s]\n\tData %s\n\tLeft %d\n\tTop %d\n\tRight %d\n\tBottom %d\n",
- i+1, type, barcodes[i].pszBarCodeData,
- barcodes[i].rcBarLocation.left,
- barcodes[i].rcBarLocation.top,
- barcodes[i].rcBarLocation.right,
- barcodes[i].rcBarLocation.bottom);
- }
- L_BarCodeFree(&barcodes);
- }
- else if(ret == ERROR_BARCODE_NOTFOUND)
- printf("\nNo %s barcodes found\n", description);
- else
- printf("\nError L_BarCodeRead (%d) search for %s barcodes\n", ret, description);
- }
- static void ReadBarcodes(pBITMAPHANDLE bitmap)
- {
- int ret;
- ret = L_BarCodeInit(BARCODES_1D);
- if(ret!=SUCCESS)
- {
- printf("\nError L_BarCodeInit: %d\n", ret);
- return;
- }
- Read(bitmap, BARCODE_1D_READ_ANYTYPE, "Linear");
- L_BarCodeExit();
- }
- static void WriteBarcode(const char *filename, const char *dataString, L_UINT32 barcodeType)
- {
- BITMAPHANDLE barcodeBitmap = { 0 };
- int ret;
- BARCODEDATA data;
- BARCODE1D bar1d;
- ret = L_CreateBitmap(&barcodeBitmap, sizeof(BITMAPHANDLE), TYPE_CONV, 2550,3300, 1, ORDER_BGR, NULL, TOP_LEFT, NULL,0);
- if(ret!=SUCCESS)
- {
- printf("\nError L_CreateBitmap: %d\n", ret);
- return;
- }
- ret = L_BarCodeInit(BARCODES_1D);
- if(ret!=SUCCESS)
- {
- L_FreeBitmap(&barcodeBitmap);
- printf("\nError L_BarCodeInit: %d\n", ret);
- return;
- }
- L_FillBitmap(&barcodeBitmap, RGB(255,255,155));
- memset(&data,0,sizeof(BARCODEDATA));
- memset(&bar1d,0,sizeof(BARCODE1D));
- data.uStructSize = sizeof(BARCODEDATA);
- data.rcBarLocation.left = 281;
- data.rcBarLocation.top = 413;
- data.rcBarLocation.right = 1326;
- data.rcBarLocation.bottom = 1023;
- data.nUnits = BARCODE_SCANLINES_PER_PIXELS;
- data.ulType = barcodeType;
- data.pszBarCodeData = (L_CHAR*)dataString;
- data.nSizeofBarCodeData = (L_INT)strlen(dataString);
- bar1d.uStructSize = sizeof(BARCODE1D);
- bar1d.bErrorCheck = 1;
- bar1d.bOutShowText = 1;
- #if defined(LEADTOOLS_V19_OR_LATER)
- ret = L_BarCodeWrite(&barcodeBitmap, &data, NULL, BARCODE_USECOLORS, &bar1d, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
- #else
- ret = L_BarCodeWrite(&barcodeBitmap, &data, NULL, BARCODE_USECOLORS, &bar1d, NULL, NULL, NULL, NULL);
- #endif // #if defined(LEADTOOLS_V19_OR_LATER)
- if(ret==SUCCESS)
- {
- ret = L_SaveBitmap((L_TCHAR*)filename, &barcodeBitmap, FILE_CCITT_GROUP4, 1, 0, NULL);
- if(ret!=SUCCESS)
- printf("\nError L_SaveBitmap: %d", ret);
- }
- else
- printf("\nError L_BarCodeWrite: %d", ret);
- L_FreeBitmap(&barcodeBitmap);
- L_BarCodeExit();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement