Showing posts with label Zint. Show all posts
Showing posts with label Zint. Show all posts
2016/10/20
Create barcode using Zint static library
이전 글에서 작성한 대로 생성한 Zint 정적 라이브러리를 이용하여 바코드를 생성해 보았다.
Build Zint static library on windows
라이브러리는 정상적으로 동작을 하였다.
사용법은 설명 보다는 코드로 남기는 것이 이해가 쉬울 것 같아 코드로 남긴다.
zint_symbol 구조체에 여러 설정을 하여 바코드를 생성할 수 있다.
설정할 수 있는 항목은 여백, 배경색, 전경색, 테두리 등을 설정할 수 있다.
자세한 설정 방법은 Zint 매뉴얼(http://www.zint.org.uk/Manual.aspx?type=p&page=1)에 설명되어 있다.
Build Zint static library on windows
라이브러리는 정상적으로 동작을 하였다.
사용법은 설명 보다는 코드로 남기는 것이 이해가 쉬울 것 같아 코드로 남긴다.
struct zint_symbol *pZintSymbolStruct; // Zint symbol 생성 pZintSymbolStruct = ZBarcode_Create(); if (pZintSymbolStruct != nullptr) { TRACE("Symbol successfully created!\n"); // 생성할 바코드 문자열. 최대 128자 unsigned char szBuf[ZINT_TEXT_SIZE] = "created barcode by Zint\0"; // 주어진 문자열로 바코드 생성. // 문자열 길이를 0으로 입력하면 입력된 문자열의 첫번째 Null 까지 Encode. ZBarcode_Encode(pZintSymbolStruct, szBuf, 0); // 생성한 바코드를 파일로 저장. // 바코드 타입을 설정하지 않으면 기본으로 Code 128이 설정된다. // Symbol 생성시 기본 출력 파일 이름은 out.png // 각도는 0, 90, 180, 270 를 입력할 수 있다. // 그 이외의 각도를 넘기면 예외가 발생한다. ZBarcode_Print(pZintSymbolStruct, 0); // Symbol 초기화 ZBarcode_Clear(pZintSymbolStruct); // Barcode를 QRCode로 지정 pZintSymbolStruct->symbology = BARCODE_QRCODE; // 출력 파일은 out2.png로 지정 strcpy_s(pZintSymbolStruct->outfile, FILENAME_MAX, "out2.png"); // 바코드로 생성할 문자열 설정 strcpy_s((char*)szBuf, ZINT_TEXT_SIZE, "한글 바코드, 韓字!"); // 인코딩과 파일 저장을 한번에 수행 ZBarcode_Encode_and_Print(pZintSymbolStruct, szBuf, 0, 0); // Symbol 초기화 ZBarcode_Clear(pZintSymbolStruct); pZintSymbolStruct->symbology = BARCODE_QRCODE; strcpy_s((char*)szBuf, ZINT_TEXT_SIZE, "메모리에 바코드 생성"); // 바코드를 인코딩하여 메모리에 저장 // 바코드는 pZintSymbolStruct->bitmap 에 저장 ZBarcode_Encode_and_Buffer(pZintSymbolStruct, szBuf, 0, 270); // 메모리에 저장된 바코드 이미지를 이용하여 OpenCV Mat 생성 cv::Mat matBarcode = cv::Mat( pZintSymbolStruct->bitmap_height , pZintSymbolStruct->bitmap_width , CV_8UC3 , pZintSymbolStruct->bitmap); // 화면에 보여주기 cv::namedWindow("Barcode"); cv::imshow("Barcode", matBarcode); } // Symbol 삭제 ZBarcode_Delete(pZintSymbolStruct);
zint_symbol 구조체에 여러 설정을 하여 바코드를 생성할 수 있다.
설정할 수 있는 항목은 여백, 배경색, 전경색, 테두리 등을 설정할 수 있다.
자세한 설정 방법은 Zint 매뉴얼(http://www.zint.org.uk/Manual.aspx?type=p&page=1)에 설명되어 있다.
2016/10/19
Build Zint static library on windows
ZXing 자바 버전에는 바코드를 생성할 수 있지만 cpp 버전인 ZXing cpp에는 바코드 생성 기능이 포함되저 있지 않았다. 그래서 바코드를 생성할 수 있는 라이브러리를 찾다가 발견한 것이 ZInt 이다.
CMake를 지원하여 쉽게 빌드가 될 줄 알았는데 종속성때문에 쉽게 되지 않았다. ZInt를 빌드하려면 zlib와 libpng가 필요한데 Zint에 포함되어 있지 않아 직접 만들어서 구성을 해 줘야 한다. 직접 빌드하여 ZInt에 포함되어 있는 프로젝트를 빌드해보려 했지만 여러차례 실패하고 직접 프로젝트를 만들어 정적 라이브러리를 생성했다.
잊지 않기 위해 빌드 절차를 기록 했다.
우선 필요한 라이브러리인 zlib와 libpng를 빌드 한다.
CMake를 이용하여 빌드 환경을 구성 하였다.
zlib는 CMAKE_INSTALL_PREFIX만 설정하고 빌드 하였다.
빌드하면 동적 라이브러와 정적 라이브러리를 얻을 수 있다.
libpng의 경우 빌드해 놓은 zlib 정보를 설정해 주어야 한다.
아래 항목에 대하여 입력을 해 준다.
CMAKE_INSTALL_PREFIX: 설치 경로
ZLIB_INCLUDE_DIR: zlib CMAKE_INSTALL_PREFIX/include
ZLIB_LIBRARY_DEBUG: zlib project path/Debug/zlibstaticd.lib
ZLIB_LIBRARY_RELEASE: zlib project path/Release/zlibstatic.lib
이제 본격적으로 ZInt를 빌드할 차례이다.
먼저 Visual Studio에서 정적 라이브러리 프로젝트를 생성하고 ZInt 에 포함되어있는 backend 폴더의 소스를 생성한 프로젝트에 모두 추가한다.
그리고 Preprocessor 설정에 Zint 라이브러리 버전을 아래와 같이 설정해 주어야 한다.
Preprocessor definitions
ZINT_VERSION="2.4.3.0"
다음으로 추가 포함 경로에 zlib와 libpng 의 설치 경로의 include 폴더를 지정한다.
zlib's CMAKE_INSTALL_PREFIX\include
libpng's CMAKE_INSTALL_PREFIX\include
다음, 추가 라이브러리 경로를 Debug와 Release에 맞게 설정 한다.
Additional Library Directories
Debug
zlib project path\Debug
libpng project path\Debug
Release
zlib project path\Release
libpng project path\Release
마지막으로 추가 종속성 라이브러리를 설정 한다.
Librarian -> Additional Dependencies
Debug
zlibstaticd.lib, libpng16_staticd.lib
Release
zlibstatic.lib, libpng16_static.lib
이제 구성을 다 마쳤다. 빌드만 하면 된다.
Visual Studio 2015버전으로 빌드를 했는데 아무런 에러없이 정적 라이브러리를 얻을 수 있었다.
다음에는 만들어진 라이브러리를 이용해서 바코드를 만들어 보겠다.
CMake를 지원하여 쉽게 빌드가 될 줄 알았는데 종속성때문에 쉽게 되지 않았다. ZInt를 빌드하려면 zlib와 libpng가 필요한데 Zint에 포함되어 있지 않아 직접 만들어서 구성을 해 줘야 한다. 직접 빌드하여 ZInt에 포함되어 있는 프로젝트를 빌드해보려 했지만 여러차례 실패하고 직접 프로젝트를 만들어 정적 라이브러리를 생성했다.
잊지 않기 위해 빌드 절차를 기록 했다.
우선 필요한 라이브러리인 zlib와 libpng를 빌드 한다.
CMake를 이용하여 빌드 환경을 구성 하였다.
zlib는 CMAKE_INSTALL_PREFIX만 설정하고 빌드 하였다.
빌드하면 동적 라이브러와 정적 라이브러리를 얻을 수 있다.
libpng의 경우 빌드해 놓은 zlib 정보를 설정해 주어야 한다.
아래 항목에 대하여 입력을 해 준다.
CMAKE_INSTALL_PREFIX: 설치 경로
ZLIB_INCLUDE_DIR: zlib CMAKE_INSTALL_PREFIX/include
ZLIB_LIBRARY_DEBUG: zlib project path/Debug/zlibstaticd.lib
ZLIB_LIBRARY_RELEASE: zlib project path/Release/zlibstatic.lib
이제 본격적으로 ZInt를 빌드할 차례이다.
먼저 Visual Studio에서 정적 라이브러리 프로젝트를 생성하고 ZInt 에 포함되어있는 backend 폴더의 소스를 생성한 프로젝트에 모두 추가한다.
그리고 Preprocessor 설정에 Zint 라이브러리 버전을 아래와 같이 설정해 주어야 한다.
Preprocessor definitions
ZINT_VERSION="2.4.3.0"
다음으로 추가 포함 경로에 zlib와 libpng 의 설치 경로의 include 폴더를 지정한다.
zlib's CMAKE_INSTALL_PREFIX\include
libpng's CMAKE_INSTALL_PREFIX\include
다음, 추가 라이브러리 경로를 Debug와 Release에 맞게 설정 한다.
Additional Library Directories
Debug
zlib project path\Debug
libpng project path\Debug
Release
zlib project path\Release
libpng project path\Release
마지막으로 추가 종속성 라이브러리를 설정 한다.
Librarian -> Additional Dependencies
Debug
zlibstaticd.lib, libpng16_staticd.lib
Release
zlibstatic.lib, libpng16_static.lib
이제 구성을 다 마쳤다. 빌드만 하면 된다.
Visual Studio 2015버전으로 빌드를 했는데 아무런 에러없이 정적 라이브러리를 얻을 수 있었다.
다음에는 만들어진 라이브러리를 이용해서 바코드를 만들어 보겠다.
Subscribe to:
Posts
(
Atom
)