亚洲欧美第一页_禁久久精品乱码_粉嫩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);		/* 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(png_ptr));	        /* cleanup heap allocation */	for (y=0; y<height; y++)		free(row_pointers[y]);	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一区二区三区免费野_久草精品视频
一区二区三区免费| 欧美一区二区视频在线观看2020| 亚洲另类春色校园小说| 亚洲精品一区二区三区影院| 日韩经典一区二区| 在线播放视频一区| 99久久婷婷国产综合精品电影| 日本不卡一二三| 亚洲精品日产精品乱码不卡| 国产天堂亚洲国产碰碰| 91精品国产欧美一区二区18| 色综合激情五月| 国产99精品视频| 久久99精品国产.久久久久| 亚洲成人高清在线| 亚洲激情一二三区| 国产精品免费人成网站| 亚洲精品在线一区二区| 欧美一区二区三区男人的天堂| 色拍拍在线精品视频8848| 成人久久18免费网站麻豆| 国产主播一区二区| 久久精品国产99久久6| 日韩精品三区四区| 五月综合激情网| 亚洲免费av网站| 国产欧美日韩不卡| 精品国产一区二区国模嫣然| 亚洲大片一区二区三区| 中文字幕亚洲不卡| 国产日韩欧美a| 久久影院电视剧免费观看| 欧美一个色资源| 51精品国自产在线| 欧美日韩国产一区| 在线不卡的av| 欧美高清视频在线高清观看mv色露露十八| 91免费观看视频在线| av中文字幕不卡| 成人18精品视频| 99re视频精品| 在线免费观看日本一区| 欧美一a一片一级一片| 欧洲av在线精品| 欧美性生活大片视频| 欧美性三三影院| 欧美精品日韩一区| 日韩精品一区二区在线| 久久蜜臀中文字幕| 日本一区二区三级电影在线观看 | 成人一二三区视频| 国产91富婆露脸刺激对白| 丁香六月综合激情| 91在线视频免费91| 欧美性极品少妇| 欧美一区午夜精品| 2022国产精品视频| 久久久一区二区三区捆绑**| 国产精品无人区| 一区二区三区欧美久久| 日本少妇一区二区| 极品少妇一区二区| aaa欧美色吧激情视频| 色婷婷av一区二区三区大白胸| 精品视频一区二区不卡| 日韩一区二区三区视频| 久久久激情视频| 亚洲人成人一区二区在线观看 | 亚洲国产成人自拍| 亚洲欧美国产77777| 日韩黄色免费网站| 国产盗摄视频一区二区三区| 色猫猫国产区一区二在线视频| 8x8x8国产精品| 国产色产综合色产在线视频| 一区二区三区四区高清精品免费观看| 三级亚洲高清视频| 成人免费视频一区| 欧美亚洲禁片免费| 久久久99久久精品欧美| 亚洲色图欧洲色图婷婷| 欧美aaaaa成人免费观看视频| 国产夫妻精品视频| 欧美色涩在线第一页| 国产校园另类小说区| 亚洲福中文字幕伊人影院| 久草热8精品视频在线观看| 91在线码无精品| 日韩美女主播在线视频一区二区三区 | 亚洲手机成人高清视频| 青草av.久久免费一区| av不卡免费在线观看| 日韩一区二区免费在线电影| 亚洲精品中文在线影院| 国产自产v一区二区三区c| 欧美性感一区二区三区| 国产精品免费视频网站| 国内精品嫩模私拍在线| 欧美三级视频在线观看| 国产精品免费看片| 国产一区二区三区精品视频| 欧美在线短视频| 国产精品久久久久久久午夜片| 美日韩一级片在线观看| 欧美在线色视频| 亚洲天堂精品视频| 国产大陆亚洲精品国产| 日韩精品一区二区三区四区| 亚洲第一久久影院| 色爱区综合激月婷婷| 国产精品久99| 久久99精品久久久久久久久久久久| 色系网站成人免费| 久久久精品日韩欧美| 麻豆精品视频在线观看| 在线视频一区二区三| 欧美国产日产图区| 乱一区二区av| 成人h版在线观看| 国产亚洲一本大道中文在线| 天堂久久久久va久久久久| 91麻豆国产香蕉久久精品| 欧美激情综合五月色丁香| 韩日精品视频一区| 91精品啪在线观看国产60岁| 亚洲欧美一区二区三区孕妇| 国产一本一道久久香蕉| 欧美一区二区网站| 亚洲综合丝袜美腿| 成人激情综合网站| 国产亚洲精品中文字幕| 蜜桃av一区二区三区电影| 欧美日免费三级在线| 无吗不卡中文字幕| 欧美综合欧美视频| 亚洲精品福利视频网站| av不卡一区二区三区| 久久蜜桃av一区二区天堂 | 亚洲欧洲综合另类| 成人白浆超碰人人人人| 久久精品人人做| 久久精品国产**网站演员| 日韩欧美国产一区二区三区 | 久久亚洲一区二区三区明星换脸 | 一区在线观看免费| 成人免费视频视频| 亚洲九九爱视频| 色婷婷av一区二区三区大白胸 | 亚洲欧洲日产国码二区| 精品亚洲免费视频| 精品国产成人系列| 久久国产视频网| 国产成人av电影在线播放| 国产精品久线观看视频| www.成人在线| 亚洲乱码国产乱码精品精的特点 | 欧美亚洲一区二区在线| 中文字幕一区二区在线播放| 一本久久a久久精品亚洲| 伊人色综合久久天天人手人婷| 在线亚洲免费视频| 亚洲成人av免费| 久久久久亚洲蜜桃| 黄网站免费久久| 久久久久久久久蜜桃| 成人午夜免费av| 亚洲色图丝袜美腿| 欧美日韩午夜精品| 免费观看在线综合| 久久精品这里都是精品| av在线免费不卡| 亚洲自拍另类综合| 欧美人与z0zoxxxx视频| 美国十次综合导航| 综合激情成人伊人| 精品视频在线免费看| 美女视频一区二区三区| 日韩欧美不卡在线观看视频| 国产最新精品免费| 久久综合九色综合97婷婷女人| 成人一级片网址| 亚洲一区二区三区不卡国产欧美| 欧美日韩国产在线观看| 国产一区在线精品| 亚洲免费电影在线| 日韩免费电影一区| 粉嫩一区二区三区在线看| 亚洲夂夂婷婷色拍ww47| 欧美成人r级一区二区三区| 国产九色精品成人porny| 亚洲第一久久影院| 国产日韩精品一区二区浪潮av| 91丨九色porny丨蝌蚪| 午夜伊人狠狠久久| 欧美激情一区二区三区四区| 欧美色综合影院| 国产高清久久久久| 亚洲国产综合人成综合网站| 精品精品国产高清a毛片牛牛| www.欧美日韩|