⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dmtx_write.c

📁 Datamatrix二维码库和测试程序,运行于linux,仔细研究可以很容易转化成VC程序,有这就没必要化钱买个控件了,本人libdmtx-0.3版本转化过,的确可行,现在把找到该版本的libdmtx
💻 C
字号:
/** * Copyright (c) 2005 Christian Hentschel * * This file is part of the libdmtx-php extension. * * libdmtx-php is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * libdmtx-php is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Open_cli; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA * * Christian Hentschel * chentschel@gmail.com */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <php.h>#include <dmtx.h>#include "php_dmtx.h"#define PHP_DMTX_IMAGE_RES_NAME "Datamatrix Image"int le_dmtx_image;ZEND_DECLARE_MODULE_GLOBALS(dmtx)static function_entry dmtx_functions[] = {   PHP_FE(dmtx_write, NULL)   PHP_FE(dmtx_getRow, NULL)   PHP_FE(dmtx_getSize, NULL)   {NULL, NULL, NULL}};zend_module_entry dmtx_module_entry = {#if ZEND_MODULE_API_NO >= 20010901   STANDARD_MODULE_HEADER,#endif   PHP_DMTX_EXTNAME,   dmtx_functions,   PHP_MINIT(dmtx),   PHP_MSHUTDOWN(dmtx),   PHP_RINIT(dmtx),   NULL,   NULL,#if ZEND_MODULE_API_NO >= 20010901   PHP_DMTX_VERSION,#endif   STANDARD_MODULE_PROPERTIES};#ifdef COMPILE_DL_DMTXZEND_GET_MODULE(dmtx)#endifstatic void php_dmtx_init_globals(zend_dmtx_globals *dmtx_globals){}PHP_RINIT_FUNCTION(dmtx){   DMTX_G(row_index) = 0;   return SUCCESS;}static void php_dmtx_image_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC){   DmtxEncode *enc = (DmtxEncode *)rsrc->ptr;   if(enc) {      dmtxEncodeStructDeInit(enc);      free(enc);      enc = NULL;   }}PHP_MINIT_FUNCTION(dmtx){   le_dmtx_image = zend_register_list_destructors_ex(php_dmtx_image_dtor, NULL,         PHP_DMTX_IMAGE_RES_NAME, module_number);   ZEND_INIT_MODULE_GLOBALS(dmtx, php_dmtx_init_globals, NULL);   return SUCCESS;}PHP_MSHUTDOWN_FUNCTION(dmtx){   return SUCCESS;}PHP_FUNCTION(dmtx_write){   unsigned char *data;   int data_len;   int i;   DmtxEncode *enc;   if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",         &data, &data_len) == FAILURE)      RETURN_NULL();   enc = (DmtxEncode *)malloc(sizeof(DmtxEncode));   *enc = dmtxEncodeStructInit();   dmtxEncodeDataMatrix(enc, data_len, data, DmtxSymbolSquareAuto);   printf("ddd");   fflush(stdout);   ZEND_REGISTER_RESOURCE(return_value, enc, le_dmtx_image);}PHP_FUNCTION(dmtx_getSize){   DmtxEncode *enc;   zval *zImage;   if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zImage) == FAILURE)      RETURN_NULL();   ZEND_FETCH_RESOURCE(enc, DmtxEncode *, &zImage, -1, PHP_DMTX_IMAGE_RES_NAME, le_dmtx_image);   array_init(return_value);   add_assoc_long(return_value, "width", enc->image->width);   add_assoc_long(return_value, "height", enc->image->height);}PHP_FUNCTION(dmtx_getRow){   DmtxEncode *enc;   zval *zImage;   int i;   if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zImage) == FAILURE)      RETURN_NULL();   ZEND_FETCH_RESOURCE(enc, DmtxEncode *, &zImage, -1, PHP_DMTX_IMAGE_RES_NAME, le_dmtx_image);   DmtxImage *img = enc->image;   if(DMTX_G(row_index) >= img->height)      RETURN_NULL();   array_init(return_value);   for(i = 0; i < img->width; i++) {      int pos = (DMTX_G(row_index) * img->width) + i;      zval *arr;      ALLOC_INIT_ZVAL(arr);      array_init(arr);      add_assoc_long(arr, "R", img->pxl[pos][0]);      add_assoc_long(arr, "G", img->pxl[pos][1]);      add_assoc_long(arr, "B", img->pxl[pos][2]);      add_next_index_zval(return_value, arr);   }   DMTX_G(row_index)++;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -