亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dmtxwrite.c

?? Linux系統下,二維碼生成源代碼.希望對大家有所幫助.
?? C
字號:
/*libdmtx - Data Matrix Encoding/Decoding LibraryCopyright (C) 2006 Mike LaughtonThis library is free software; you can redistribute it and/ormodify it under the terms of the GNU Lesser General PublicLicense as published by the Free Software Foundation; eitherversion 2.1 of the License, or (at your option) any later version.This library is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNULesser General Public License for more details.You should have received a copy of the GNU Lesser General PublicLicense along with this library; if not, write to the Free SoftwareFoundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USAContact: mike@dragonflylogic.com*//* $Id: dmtxwrite.c,v 1.5 2006/10/15 19:37:58 mblaughton Exp $ */#include <stdlib.h>#include <stdio.h>#include <string.h>#include <getopt.h>#include <errno.h>#include <ctype.h>#include <stdarg.h>#include <sys/time.h>#include <dmtx.h>#include "dmtxwrite.h"#include <png.h>#define DMTXWRITE_SUCCESS     0#define DMTXWRITE_ERROR       1#define MIN(x,y) ((x < y) ? x : y)static void InitScanOptions(ScanOptions *options);static int HandleArgs(ScanOptions *options, int *argcp, char **argvp[], DmtxEncode *encode);static long StringToLong(char *numberString);static void ShowUsage(int status);static void FatalError(int errorCode, char *fmt, ...);static void WriteImagePnm(DmtxEncode *encode, char *path);char *programName;void abort_(const char * s, ...){	va_list args;	va_start(args, s);	vfprintf(stderr, s, args);	fprintf(stderr, "\n");	va_end(args);	abort();}int x, y;int width, height;png_byte color_type;png_byte bit_depth;png_structp png_ptr;png_infop info_ptr;int number_of_passes;png_bytep * row_pointers;//timeval startTimer;//timeval endTimer;/** * Main function for the dmtxwrite Data Matrix scanning utility. * * @param  argc count of arguments passed from command line * @param  argv list of argument passed strings from command line * @return      numeric success / failure exit code */intmain(int argc, char *argv[]){     int err;   //   long timeval_us = 0;   //  gettimeofday(&startTimer,0);   ScanOptions options;   DmtxEncode *encode;   encode = dmtxEncodeCreate();   InitScanOptions(&options);   err = HandleArgs(&options, &argc, &argv, encode);   if(err)      ShowUsage(err);   dmtxEncodeData(encode, options.inputString);   WriteImagePnm(encode, options.outputPath);   dmtxEncodeDestroy(&encode);   //gettimeofday(&endTimer,0);   //timeval_us = (endTimer.tv_sec-startTimer.tv_sec)*1000000+   //endTimer.tv_usec-startTimer.tv_usec;   //printf("%l",timeval_us);   exit(0);}/** * * */static voidInitScanOptions(ScanOptions *options){   memset(options, 0x00, sizeof(ScanOptions));   options->outputPath = "encode.pnm";}/** * Sets and validates user-requested options from command line arguments. * * @param options runtime options from defaults or command line * @param argcp   pointer to argument count * @param argvp   pointer to argument list * @return        DMTXWRITE_SUCCESS | DMTXWRITE_ERROR */static intHandleArgs(ScanOptions *options, int *argcp, char **argvp[], DmtxEncode *encode){   int opt;   int longIndex;   struct option longOptions[] = {         {"output",   required_argument, NULL, 'o'},         {"format",   required_argument, NULL, 'f'},         {"encoding", required_argument, NULL, 'e'},         {"size",     required_argument, NULL, 's'},         {"tilde",    no_argument,       NULL, 't'},         {"margin",   required_argument, NULL, 'm'},         {"module",   required_argument, NULL, 'd'},         {"rotate",   required_argument, NULL, 'r'},         {"bgcolor",  required_argument, NULL, 'b'},         {"color",    required_argument, NULL, 'c'},         {"verbose",  no_argument,       NULL, 'V'},         {"help",     no_argument,       NULL,  0 },         {0, 0, 0, 0}   };   programName = (*argvp)[0];   if(programName && strrchr(programName, '/'))      programName = strrchr(programName, '/') + 1;   for(;;) {      opt = getopt_long(*argcp, *argvp, "o:f:e:s:tm:d:r:b:c:V", longOptions, &longIndex);      if(opt == -1)         break;      switch(opt) {         case 0: // --help            ShowUsage(0);            break;         case 'o':            options->outputPath = optarg;            break;         case 'f':         case 'e':         case 's':         case 't':            fprintf(stdout, "Option \"%c\" not implemented yet\n", opt);            break;         case 'm':            encode->marginSize = StringToLong(optarg);            break;         case 'd':            encode->moduleSize = StringToLong(optarg);            break;         case 'r':            options->rotate = StringToLong(optarg);            break;         case 'b':            options->bgColor.R = 255;            options->bgColor.G = 255;            options->bgColor.B = 255;            fprintf(stdout, "Option \"%c\" not implemented yet\n", opt);            break;         case 'c':            options->fgColor.R = 0;            options->fgColor.G = 0;            options->fgColor.B = 0;            fprintf(stdout, "Option \"%c\" not implemented yet\n", opt);            break;         case 'V':            options->verbose = 1;            break;         default:            return DMTXWRITE_ERROR;            break;      }   }   // Message not provided   if(optind == *argcp) {      // XXX not sure if this is defined behavior -- optind only      // XXX defined when non-option parameter is present?      if(*argcp == 1)         return DMTXWRITE_ERROR;      else         FatalError(1, _("Must provide message to be encoded\n"));   }   options->inputString = (unsigned char *)(*argvp)[optind];   return DMTXWRITE_SUCCESS;}/** * Convert a string of characters to a long integer.  If string cannot be * converted then the function will abort the program. * * @param numberString pointer to string of numbers * @return             converted long */static longStringToLong(char *numberString){   long numberLong;   char *trailingChars;   errno = 0;   numberLong = strtol(numberString, &trailingChars, 10);   while(isspace(*trailingChars))      trailingChars++;   if(errno != 0 || *trailingChars != '\0')      FatalError(2, _("Invalid number \"%s\""), numberString);   return numberLong;}/** * Display program usage and exit with received status. * * @param status error code returned to OS * @return       void */static voidShowUsage(int status){   if(status != 0) {      fprintf(stderr, _("Usage: %s [OPTION]... DATA\n"), programName);      fprintf(stderr, _("Try `%s --help' for more information.\n"), programName);   }   else {      fprintf(stdout, _("Usage: %s [OPTION]... DATA\n"), programName);      fprintf(stdout, _("\Encode DATA and write Data Matrix barcode to desired format\n\\n\Example: %s -f PNG -o secret.png \"Top Secret Code\"\n\\n\OPTIONS:\n"), programName);      fprintf(stdout, _("\  -o, --output=FILE          barcode output filename\n\  -f, --format=[pa]          barcode output format\n\        p = PNG              [default]\n\        a = ASCII\n\  -e, --encoding=[uact8]     encodation scheme\n\        u = Auto             [default]\n\        a = ASCII\n\        c = C40\n\        t = Text\n\        8 = Base 256\n\  -s, --size=SIZE            symbol size in Rows x Cols\n\        s = Auto square      [default]\n\        r = Auto rectangle\n\        Valid SIZE options for square symbols:\n\        10x10,  12x12,   14x14,   16x16,   18x18,   20x20,\n\        22x22,  24x24,   26x26,   32x32,   36x36,   40x40,\n\        44x44,  48x48,   52x52,   64x64,   72x72,   80x80,\n\        88x88,  96x96, 104x104, 120x120, 132x132, 144x144\n\        Valid SIZE options for rectangular symbols:\n\         8x18,   8x32,   12x26,   12x36,   16x36,   16x48\n\  -t, --tilde                process tilde\n\  -m, --margin=NUM           margin size (in pixels)\n\  -d, --module=NUM           module size (in pixels)\n\  -r, --rotate=NUM           rotation angle (degrees)\n\  -b, --bgcolor=COLOR        background color\n\  -c, --color=COLOR          foreground color\n\  -V, --verbose              use verbose messages\n\      --help                 display this help and exit\n"));      fprintf(stdout, _("\nReport bugs to <mike@dragonflylogic.com>.\n"));   }   exit(status);}/** * Display error message and exit with error status. * * @param errorCode error code returned to OS * @param fmt       error message format for printing * @return          void */static voidFatalError(int errorCode, char *fmt, ...){   va_list va;   va_start(va, fmt);   fprintf(stderr, "%s: ", programName);   vfprintf(stderr, fmt, va);   va_end(va);   fprintf(stderr, "\n\n");   fflush(stderr);   exit(errorCode);}/** * */static voidWriteImagePnm(DmtxEncode *encode, char *path){  /* create file */     int row,col;	FILE *fp = fopen(path, "wb");	if (!fp)		abort_("[write_png_file] File %s could not be opened for writing", path);	/* initialize stuff */	png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);		if (!png_ptr)		abort_("[write_png_file] png_create_write_struct failed");	info_ptr = png_create_info_struct(png_ptr);	if (!info_ptr)		abort_("[write_png_file] png_create_info_struct failed");	if (setjmp(png_jmpbuf(png_ptr)))		abort_("[write_png_file] Error during init_io");	png_init_io(png_ptr, fp);	/* write header */	if (setjmp(png_jmpbuf(png_ptr)))		abort_("[write_png_file] Error during writing header");	png_set_IHDR(png_ptr, info_ptr, encode->image.width, encode->image.height,		     8, PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE,		     PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);	png_write_info(png_ptr, info_ptr);	/* write image */	row_pointers = (png_bytepp)png_malloc(png_ptr, sizeof(png_bytep) * encode->image.height);	if(row_pointers == NULL) {	  abort_("[write_png_file] Error during writing bytes");	}	for(row = 0; row < encode->image.height; row++) {	  row_pointers[row] = (png_bytep)png_malloc(png_ptr,encode->image.width * 3);	  for(col = 0; col < encode->image.width; col++) {	    row_pointers[row][3 *col] = encode->image.pxl[(encode->image.height - row - 1) * encode->image.width + col].R;	    row_pointers[row][3 *col + 1] = encode->image.pxl[(encode->image.height - row - 1) * encode->image.width + col].G;	    row_pointers[row][3 *col + 2] = encode->image.pxl[(encode->image.height - row - 1) * encode->image.width + col].B;	  }	}	png_write_image(png_ptr, row_pointers);		/* end write */	if (setjmp(png_jmpbuf(png_ptr)))		abort_("[write_png_file] Error during end of write");	png_write_end(png_ptr, NULL);	memcpy(fp, png_ptr,strlen((char*)png_ptr));	        /* cleanup heap allocation */	for(row = 0; row < encode->image.height; row++) {	  png_free(png_ptr, row_pointers[row]);	}	free(row_pointers);        fclose(fp);  /*   int row, col;   FILE *output;   // Flip rows top-to-bottom to account for PNM "top-left" origin   output = fopen(path, "wb");   if(output == NULL) {      perror(programName);      exit(3);   }   fprintf(output, "P6 %d %d 255 ", encode->image.width, encode->image.height);   for(row = 0; row < encode->image.height; row++) {      for(col = 0; col < encode->image.width; col++) {         fprintf(output, "%c", encode->image.pxl[(encode->image.height - row - 1) * encode->image.width + col].R);         fprintf(output, "%c", encode->image.pxl[(encode->image.height - row - 1) * encode->image.width + col].G);         fprintf(output, "%c", encode->image.pxl[(encode->image.height - row - 1) * encode->image.width + col].B);      }   }   fclose(output);  */}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青草国产成人99久久| 国产女同互慰高潮91漫画| 亚洲国产日韩一区二区| 91免费视频观看| 亚洲午夜一区二区| 欧美日韩和欧美的一区二区| 丝袜亚洲另类丝袜在线| 日韩丝袜情趣美女图片| 国产一区二区不卡| 国产精品嫩草影院av蜜臀| 91亚洲精品乱码久久久久久蜜桃| 亚洲美女精品一区| 欧美日韩小视频| 看电影不卡的网站| 国产精品卡一卡二卡三| 欧美午夜精品久久久久久超碰| 五月婷婷激情综合网| 精品久久久三级丝袜| 成人黄色软件下载| 亚洲国产精品自拍| 欧美精品一区视频| 91在线一区二区| 日本v片在线高清不卡在线观看| 久久综合给合久久狠狠狠97色69| 成人午夜又粗又硬又大| 亚洲已满18点击进入久久| 国产视频一区二区在线观看| 成年人国产精品| 日本特黄久久久高潮| 欧美激情一区二区三区| 欧美日韩成人综合天天影院| 国内精品久久久久影院色| 亚洲特级片在线| 欧美成人三级电影在线| 色久优优欧美色久优优| 国产一区二区三区免费播放 | 欧美日韩中文一区| 久久99精品国产.久久久久久| 亚洲人成网站在线| 久久这里只有精品视频网| 91视频在线看| 国产酒店精品激情| 日韩国产欧美三级| 国产精品久久久久久久久久免费看| 91精品国产一区二区三区| 99精品视频在线观看| 另类人妖一区二区av| 亚洲激情五月婷婷| 国产精品天天看| 精品成a人在线观看| 欧美日精品一区视频| 成人av免费在线播放| 久久99精品视频| 午夜精品aaa| 亚洲免费三区一区二区| 国产精品视频九色porn| 久久中文娱乐网| 日韩精品中文字幕在线一区| 欧美三级在线视频| 在线中文字幕不卡| 91免费在线视频观看| 国产.精品.日韩.另类.中文.在线.播放| 亚洲蜜臀av乱码久久精品| 国产精品国产三级国产普通话99| 日韩免费观看高清完整版| 欧美一区二区三区色| 欧美久久久一区| 69p69国产精品| 国产综合色视频| 精东粉嫩av免费一区二区三区| 青青草97国产精品免费观看 | 丰满岳乱妇一区二区三区| 国产综合色产在线精品| 久久99国内精品| 久久99精品久久久久| 久久精品国产一区二区三| 另类欧美日韩国产在线| 黄一区二区三区| 激情六月婷婷综合| 国产在线视视频有精品| 国产一区二区在线看| 国产一区二区三区四| 国产91精品在线观看| 丰满放荡岳乱妇91ww| 99久久综合国产精品| 日本乱人伦一区| 欧美日韩日日夜夜| 日韩一区二区免费高清| 精品国产一区二区三区久久久蜜月| 精品国产一区二区三区忘忧草| 久久久无码精品亚洲日韩按摩| 久久先锋影音av鲁色资源| 国产欧美日韩在线| 亚洲伦理在线免费看| 一区二区三区日韩欧美| 亚洲第四色夜色| 激情综合色播激情啊| 成人毛片在线观看| 91久久精品一区二区三区| 欧美日韩一区国产| 精品国产伦理网| 一区二区中文字幕在线| 天堂在线一区二区| 精品在线视频一区| 99久久99久久久精品齐齐| 日本韩国欧美国产| 欧美一区二区精品在线| 国产亚洲自拍一区| 一区二区三区中文字幕电影| 成人高清视频免费观看| 一本色道久久综合精品竹菊| 91精品国产入口在线| 久久精品一级爱片| 亚洲午夜电影网| 国内成人精品2018免费看| 91亚洲大成网污www| 欧美一区二区网站| 亚洲视频综合在线| 美国三级日本三级久久99 | 国产精品久线在线观看| 丝袜美腿成人在线| 成人高清视频在线| 日韩一级成人av| 日韩一区在线看| 美女视频一区二区三区| 91蝌蚪国产九色| 久久青草国产手机看片福利盒子 | 亚洲第一久久影院| 国产乱子伦视频一区二区三区| 91福利国产成人精品照片| 日韩午夜激情av| 亚洲男同1069视频| 国产超碰在线一区| 日韩视频一区二区三区| 亚洲男同性恋视频| 成人h精品动漫一区二区三区| 日韩欧美在线综合网| 亚洲自拍偷拍麻豆| 99精品欧美一区| 久久久亚洲精华液精华液精华液| 天天做天天摸天天爽国产一区| 成人黄动漫网站免费app| 欧美va亚洲va| 婷婷丁香久久五月婷婷| 欧美在线观看一二区| 中文字幕在线观看不卡视频| 激情文学综合网| 日韩免费看网站| 婷婷六月综合网| 欧美丝袜自拍制服另类| 综合婷婷亚洲小说| 成人免费av资源| 中文字幕第一区| 国产a区久久久| 国产女人18水真多18精品一级做 | 国产精品一级黄| 欧美成人精品福利| 日韩国产欧美在线观看| 欧美性受xxxx| 亚洲一区二区三区四区在线| 99麻豆久久久国产精品免费| 亚洲国产成人一区二区三区| 国内成人免费视频| 久久天堂av综合合色蜜桃网| 秋霞午夜av一区二区三区| 欧美老人xxxx18| 天天色综合天天| 日韩一级成人av| 免费看精品久久片| 日韩视频在线一区二区| 毛片av一区二区| 日韩欧美成人一区| 九色综合狠狠综合久久| 欧美电影免费观看高清完整版在 | 1024精品合集| 91久久久免费一区二区| 亚洲精品免费在线| 91精品福利视频| 偷拍一区二区三区四区| 制服丝袜亚洲精品中文字幕| 日韩国产精品久久久久久亚洲| 日韩一区二区三区高清免费看看| 欧美96一区二区免费视频| 日韩免费电影一区| 国产一区二区三区免费观看| 国产欧美日韩亚州综合| 不卡一区二区三区四区| 日韩伦理免费电影| 欧美日韩国产一二三| 青青青伊人色综合久久| 久久你懂得1024| 99久久伊人精品| 日欧美一区二区| 久久综合成人精品亚洲另类欧美 | 男男gaygay亚洲| 久久久噜噜噜久噜久久综合| 99精品国产热久久91蜜凸| 亚洲国产乱码最新视频| 精品国产乱码久久久久久浪潮 | 蜜桃视频一区二区三区在线观看|